<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <meta name="theme-color" content="#3367D6"/>
  <link rel="apple-touch-icon" href="/icons-192.png">
  <link rel="manifest" href="/manifest.json">
  
  <meta name="generator" content="Hexo 6.3.0">

  

  

  
    <meta name="author" content="QAQ">
  

  

  

  <title>springboot使用缓存注解 | QAQ</title>

  

  
    <link rel="shortcut icon" href="/blog/favicon.ico">
  

  <!--mathjax latex数学公式显示支持-->
  
  

  
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@1.1.13/index.min.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.7.0/build/styles/monokai.min.css">
  

  

  
<link rel="stylesheet" href="/blog/css/style.css">

</head>
<body>
  <div class="root-container">
    
<!-- header container -->
<header class="header-container post">
  
    <div class="post-image" style="background-image: url(https://qiniu.sukoshi.xyz/src/images/68686407_p0.jpg)"></div>
  

  <!-- navbar -->
<nav class="navbar">
  <div class="navbar-content">
    <!-- logo -->
    <div class="navbar-logo">
      <a href="/blog/">
        
          QAQ
        
      </a>
    </div>
    <!-- link -->
    <div class="navbar-link">
      <div class="navbar-btn">
        <div></div>
        <div></div>
        <div></div>
      </div>
      <ul class="navbar-list">
        
      </ul>
    </div>
  </div>
</nav>

  
  

  
  

  
  

  
  

  
  
    <div class="header-content">
      <div class="post-text layout-block">
        <div class="layout-margin">
          <h1 class="title-wrap">springboot使用缓存注解</h1>
          <h2 class="title-sub-wrap">
            <strong>QAQ</strong>
            <span>发布于</span>
            <time  class="article-date" datetime="2023-05-20T02:53:52.000Z" itemprop="datePublished">2023-05-20</time>
          </h2>
          
            <h2 class="last-time">
              <span>最后更新于</span>
              <time  class="article-updated" datetime="2024-04-09T01:08:52.192Z" itemprop="dateUpdated">2024-04-09</time>
            </h2>
          
          
          <ul class="wrap-list dark">
  
</ul>
          <ul class="wrap-list dark">
  
</ul>
        </div>
      </div>
    </div>
  

  
  
  
</header>

    <!-- 文章 -->

<!-- 文章内容 -->
<div class="body-container">
  <article class="content-container layout-block post-container">
    <div class="article-info">
      
      
      
      
      <section class="article-entry markdown-body layout-margin content-padding--large soft-size--large soft-style--box">
        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉，这个密码看着不太对，请再试试。" data-whm="抱歉，这个文章不能被纠正，不过您还是能看看解密后的内容。">
  <script id="hbeData" type="hbeData" data-hmacdigest="ac2c28e1452637b5635e88fdee755eae7662b76e4675f08b5dfec5c4b5ac1bd1">f5d7027a76d40f8b4fe5a79716a716fb2e3f49ee84cb217f92cc109ad4d8682f623798417e25dbab2f42653f10ed8ea18ff6a15c068522904c270a38c646201a0be9d5bd7b3439e32ff7bc95c61646a37fd52e85aee17fb302a381c40d0e8ddd7587074a7c4c5345a2efb6eeda560d25be39fde9e5c083bd70cb50f3a04132a9f268e85a5a94fc2333cf6867168b4416aa15f97908877353756daa965ad405b5e78d1457fdffbc0ec74d510719c7eeed7d3696c76528714b336c5729ca184307ef475a650cfcd4ccc78c2f8c667a37d6040fc5f3a3ae86eb39dbd33f87865b2c2331a34acd44c0ea445342072719e703df621ee5b8a039e76597060c5f2d09cb746f9dc0356a57ac0ea553de9cb10de9763718fe11dceb3ea165e386229f002404dc89cd52f756b3c631cf9767e32bb74342d20318ce1e5a56c94d3241633fa98de6ee9574f7ea16e155e551f1fe921f9ebf17e52da6d9af24611292f161fb3a75da2113155a528188cb2a3e52e87dbe8318b21eafd6c2c7ec99449ff63a2c97213b2b88cb702452347b4b0922336a9bb75d94fb3866e8e0359259f553cf11e4dbb3af87b1c149e9bf4644151132625ed7a9d13c618036e9aac2ccf0188e010329463997504ab4334fa10fead016e61e7cca20f4883b1ce51378447103ac0f52a5a74b1d5f676ac7dfebd7b877d3dac0cd6012d1c6ab4b361e03a16734c7af57bf70bfcf6c62ee33d427fdeb255688fb9041d716a726881a3ace8966c90ed4dfb8e08d123fbfd39ecc00e8dd2af112fbac18f06a532a01492412ce35bc11b15690fc7094cf46b890c0d674275649c9ad6b7dbe60dd9c1c26534988de81a34c29adbb000565c856e3f42d81b423e321bbd94f0de18480b2545961d44459a3e728fdf16100f40e9e8d44f706ebd44656b72fcd397728b262af8afc03a2a8f5a8a84812119d3c7da25fb2fe61c94fa92ebd34ed4290de1baa0dd355852d656324c3376930f94b7d7bff5328a7d2981992ebe3162fbea1c9032cb384ecad43200cb309c8ed3737bc2854469581b731d0287e5e928dc7adb8382d6ec949c24a1d959a3d7198550fd94436705166736b0346238c0d3caecab9b198a10c701c1708618abac7127cba4c153af3402bb70da5ca1e9ccd095de08e64860eb355fd4444bf91856f7bcb6178f2ec5b821f4d5737e839e40021858f8d6f26982c19c0c77d03e82d47e5f1a71ae6407d7235638cb7af0b90e2e6ae006956b01168af5081ca032fd91bf61658a3132ccb82b78e69340dd828fe8e04111dd4a2c8e0ecf8419dd4d0c5745e02cb0bc0767d522bb75c4ad2f5fc31ece21b480af3ac4d565912241101b638e2a6172081ae01c7b9857e3d2472d1ae86051e308afa717c01c7f3c28214f213072199056403de338d016b9934c231a898ec2a1e7dd47afb85ee222ca64229579d8e3aa67c3309fac6292b66da224249b213338e608edf2dccd153b5b2a407a27e9398ebb09f7760408e2d8913811f3f2384c05d2700834cfba2ad190af63cb7326037b76a079c3351006d1d129901e319506cfff65d93bccd25032f5bd2f125ef261b3a46dd02c927d50850cd1f31b4a072ca1a4e939e47e5eec4c9da844470e8bfcf0c85200894fbaf63f48f2d554ef0ae12eb40ac790c4a54471563771cb645357b8ff6324dbaf54f35c1ee371a8dbed1caa0183e72b680c08f3d3ed730849437a9955d9d1631fa796f45d5f69e670eefc1f881452885dfc6e2f59318cce5ef46add2666c51af8d82f5fe97147ed29ee0aa4e068d787321108940db3461853d60946819ad51049bf33d8d2ca14524161fd387885adbb54802e77777d03fb52a245bf0c69b833711c1429d0d36258b05c1490e0ed5aabeaec73053d6e61842b61c7c91a712723381db39ed38e20023465e068cac76e8a62d55b1b35ccab83b7946d558de0b2ea5e32ee74a6b951639f729308c84ede138faf5715afde94abef20bfde147a32b5c653dfd13e0734b8273095c6fe096f5ac84b69bca0b143008371a52063878a315698a27e244c6a7d69e2417beebd1829ccde24439945e7a28e8f7fb3865124efd0c38930098396530521ada3a4bf771dd7dac3ee87652bb85c76b42d478b734b22ca46e76cadbe4c34189329f2aff78b3e7faa57f4d47c44991861f3d1482e4438f9f53eb564a912f215fd62e2dfa9f797e10b2511a509f624e6d848823876330689108f4e4187bd4b5384c2e4d6e3ef0d4775add1d9948782cbb9cfd4edb3247acf87c6107e7e5b2b50d6a19d0787dc171a5f407756e0b29a01771e10a791f37eccb7b3922f972372b5ccf81340f06b37df68f2a09c2cadc7536476e80525884bcd4bcc5293ad42707244dcec9db204aba5d7230d2977b59f49d0997aea2c8b573f3e02ea133f1aa26adf7492730c1a4036d2a608fa145154984cca3b84a86ce7b2f9c267c460a856cea61353a008865764c8304d746c85bd082c9f1681fb9ee08a9cd4a252742163a86f66c7079d7830c848b64b6f96aede2a689d4ba579ad94bccfaadcc9ac458e8626de1cf97b55c4f37e85aa3e34528caea1ca348c1f9d0bd955f264a1d31e458f623970c7c578a7a5f0cd370114e18f79cfd91992a29cfbbb42fbec519aedabde7046469ecfd08b576e89809896beeaec636fe73403e53e722c608152784133e64442479e7e07c981521fbcbf34ddeb8c9b3cc8686f846d9c22ea9b13a01f9ee799f8bcc9b4fe39363aef9af37e1009dab77d1a5dc807b9a1c27d13e71a4267424a8e5fd60c652f51f1de395d3d9838a64ee8660e4404a9a2044d0ffd575a970ccfda31279115c19fc7f71d413b0428555ddefd7b32b846216c6001f86d3f681adb362158ac295d9f72196f5471748cb57c7164486bc7344a212abf0cd7b69117062facd4b2535ba9df26715d6837c38539bd30d7c59c8f48d2a68250de023488752a3e2f64b99ceee1d0402ff157d5d20737abf59aa302b705f281524f3a63becfabd060875f29e59b5bebe73944e39fc81e098fc24337a3c8a80269f25e30c71ecaeca66c5146c295ccc006dfd795a297af9dc06b474b7dc758fc633ddfaa0372833198e25cdeb26df4bf08c7f17f3e74b1de2f929aebba855fa86cc095b6ce7131a0c4d3fbc2647f521842bd092d325fdf62fad9bd11162687c3ab81e3949393f49d948ac0bc41799952bc9614b333fd922a1d6fbe1925283f65f6b7e2433a68f13a4de5521bc7e36e0361e0c0d2b0f57cfcae15f70e47cf096ab7d92d81dcbb964fb2882990f584b0dd81def754a9f76143f56f45a7b0c5f9718703415e53b70806137cc4fa58ceed6369f48ce5d0a95ca26be428715ca3a7cffe7e72c9cb589a3d190fb30556021c790d0bcba9e906d773a56cdf979cdb23808cb67c5a62a669fb395dc90ee69ad0f2d83c919ab11bc05dd88557bf6a43027d1c271056654418e6cfa7ff1f326feb4c17e67e15daff1d0ee40de25a2b936d9757e234732562e2f9b852ae11b50a9871bc884f9b5d2269e84c0a277b704a0edc33d141d8dbefb006b5f2671fdfa37f7de0e72b4db4138b95cef447650a412467bdbd89a7261c3f256b4f43b9ebb2eb109e4bec99186362cbff7210f506980f2ac5dedf00d20a7a65d64d9ed52dcc4dded930f431a51f56c96123e2cb8d2a6481238294b410ba41ffbad1740c11a10c227b001be25f75abe37f817e6f33a4743ada7ae55bf38dde662bb54e080b2294b1d5d48fcd7bc8f0e76498fba7af4e0c83b19b7745a36067d41cbd57e5131cb669b0fb11e877ebf4bde44f49085b7f78c1a60ed679107cb14b430944bfa9140ba309c2e1eb758d389d11ddeea8d650104b419b5f9bc89fe616112cb9466a54e2877f1125e006031d5776b18448d6b4ca2af75f84a5159a711d5a7bdae3e99ec71de897676db62ac5cb448965154a22993d041ca272fb3f141aae86c4263d5577cb9e529e8f3106502c492e2314e1868915c4fc953e18ce9debfe2150fbe7e37fa2c2a00856b44d311e6c0daa2a40543864467bc677ecda8a8445875ae406268a3f23cc2e7b004a11ddc56695c1f6270485267afeb0ae34d583f7d9ca4ab203e46e1b14fc980b9c079887b3dad9d39f65df8f3594c9106eafea3030dd3b95d091d7dab0aaaeb3ebc572db5e14bbc49554cd37969f0f4d76be8aaa3d864bbad9583d89067f0af6b2a94c701219ff6b08d7fd86435adb786ccb92d86249a41ef2c4b6784640c934ce34663d2122aca374444f2a1f03aa3bb809b50ca62c43525f97756954c6c6ca980f7050b8e7acb7c9473559f62f4f9a08d5e0ec0e40eff84ef982c4d8cfc36f2084b44a476ecd9ca53146a71677788de9d95bd07276ee254655a39482ca231be324eb5461ae050bc107baa231e66e406ef3161f706bc720a4d17ec4025bce5cf7e43b76d49d4cf2f9a3952f57c1d3df47d9ac60e969800c21645196dbab05026cd8af5d82383991551c4845955489e0d489bd3f8c0f1af24fcaeb2ce650a5c23fa8b97a24d277c5fb4ff0c20cb68f16027e9d1ae9ca47ce0c4515a1d10036f2f3b3148d3de0eccbbc0e4da5f5e25adce0726b34a72e7385063b7438c29fe05d729f481a52ab854ce1a0b3b53b93454121e07754de3d6283efbc1e137a8d85840e20add49eef1d92fa5420f02b5415d73ccf3d271e2f1583aff2a5e13eaf69e8c67ac4bf91bd56b91a3c3fd2a2c004a416488db941853ef0e819916ae66fac100da5754a08900f00adcd2039cbd9ba9917535a3c9285c18e32446a9a204177eff04c2e9e58b41a4fc38d8ec51fa9c44f34a52d5129fcd6fa8809f983b1d8212824a81edd32ea363b6321fd5022f48a7fc82934d4a60790a0df4bcb473b76a43067b54261b88182c086d457a47fa59c4a8f5a91818b7285dbb5e6b5cfbb2d39daf163f74eba335b20b27b3adb67bf5a3d1623e7fb530cd827b51aad849618e73960439f67a42350717946bf941f8daa30a7fe2348a041b4381d7e255bfc8c0d6046b0682ede3bd5b1eff3242fe432da72c073680c939748f3e48b993ed4a7ce1712f9827cd5b836783b275b91676296d6d7d9d368514d0510c433c773f82643bd30f9b04f34ea6f915d3b26f7344ddc844cf704f560baf0edd455fff6e126b6a317162f19e3b43c89d1ac83064aab8bf87fbea4bba1fc78d0e0265608715117b8376cb2d8088b88ddfdee3d4288c790884e9acca940acce3dbc5b4b2e823b205e38316b6d6ad0f777ec14a9eaf977716f8351068fa3c8a604d3df4133c4d50cb87f80ad426ce212ed2b661e58f60d1420425b88bb3197b90f3aad7a63ace24d2b1e1b3c734acdd12b36335f777d946fcf997883ac87f0df735282d41ae9f5db7b6c775313ea6fa763c651009346651a8ebb7ff405662164b7240d4697795344533ccf786c57a5a316be57623986cf5f40a980b23efd92ed5b578657c8fa07ab7828c0525efaefe69926f1d28a06392fad8cd121af42ba722903b2ef303376edac51fb4d50b939b90b0619333eead408bedefa1e587227988d26edb686448756f39a8dc4bce4117188ecc11107f6b011eb30d86e276acca7f66e2a9961d589c0515443f9047cb433be1052029e2b8ab85d0c846ae0885f6c89a2f65e036effb8f8e0e9bd4a915a9522287ba50282bbcbb32cf37db07cb1c30fd15c76c79587f0e77234d56bef8382dcd2a6e86936c103f294e9843e4021adb0498b4f30c6ba5ba3d36e6c4cd9f5755e35d9d2efba2f9452ab00cb2c63c5c2a05a084f9279098998c1fc860c2294d2c23be941b6e7c9e9616ce87f90e23de6317b17b9ef991f1b6cc8001745c99073a6517e92c2eb4080b6956d04008ed8c81251159bbfcd6f786414cd0c8dfba9582d80265638c0352bc2cbccf5ebdc2449d3c18a01a6ac4ca44897bab0d41de0ed3939e7c036fc39b315900666ed98b7b90470fbfd9e463f3f8d875a8bbc1f14ef023be6c632b63917220447afa51eff9efcfb86b046af62e8731643ef67eb7cf7560710047805f51b92cd55bdab386938004c3c42c4712d25e6dd15fef0436aa7a2965f601f11c30df8aca65e4efc0acd2c1d1463739ed528ef8478dd5c7fdb2e32af594346e8ec426cc9e1333e3f3f5e84ced07763df37837b8bbe1fa4efd8b05ef0d06c2ee3c8eb12c8b6859bc6d420bc638419ae51a552dcdd9ea6c8b405d03c0b41348b9ec6d56dac2f01a7506b9f3eb5abdacb17858a3559968f151963416619b9f02094e7c85954b57413f4000eda00c5e531ef886467370a8b6ff51d83d63c5a8a72c0a1429577529f3fee7a8b5761922f4afff3b2e5a2d8b26b6f8d4f2feda3d310a94ab8c82f83513a0ead051dd56cb4fb0dde45ced3f22ee7ccb22220ae2cf2e5e74587bdb25edd7248a15c2bb2e6ba0341b51167c8ae39704629982d587a93179a8b31ecf9d7ffeca2474340e499f3bf4fe77786a77efc9a417301c7940c33f8c8682ad1cd5176e1f40c9d7d1f4605519ece3dfdcf8206754f24c62db658302fe16d1a812915d23aae938f2684c94ffd435a85710c34f3e2013584882e25f56f2cba09750d6c82ad4b7f5b0cbff8bd35183d96068236b5b1ebdc93ae9a64dea1a3e1d67ad050bdeceddeca757941ff88f8229b2069c38ccbe2a3e60f979326152733196d2eb6f17f5ffa9973bfc8363f1682c590e892642a9192d70dd5490b92ddbd3122f31729fa559739b440206cfff6e21bae162417d317ab0a997a6d8db0f316c0df0451d1790e4bce1d6899f0bf6bc79b8511dbe68fadb05d7824157269df9ca90747241f1d3afa041a21f2a190f7763f0f657e81c352abbcc621d561f64e227011434bdd0613ef401f5934d97c33af17cd8c13fe9ddf50a3f3331b69bf09d01cb8de13f864cbe4bfe90ce5f9d9971a2a602b5f8eb14685345c917eaed2704df0eade0f099ecfa0bf5dca16e81362898960a9da26c09d9dbb6afad0ab7119af124f441b6272c9ae096526ec8348194f4cdf4a824dcfce9cf18ba9f8bab29bbadc979c4647a72806da17deb9d68028cd2df1dae3513a3e5b211a8ef0713188906b82729fb860d5729eed881b8a3eff15a5124eaf2ec910cd446da0777a62eb2746167e16b2f7b1cd676d53797426500133d30029a655d285cfa43f28c677c778d045a1331d84fb202cb47e10197e7cde5555955472eb730f61c4e028e14ae7f485d67960f31d9abd961a258ad331f9d25d8e5036ce41cf9a5d9b5246e4ff40543b8de33cc8090fb68cf59915a725dd963403998d45ea541c3484d49b3e1685a25025c35617defeedd4f40bd69e36874cb356b6c27179e4bfeb027f287430899b044b1712aea6a8390071669e18d7f0b895d6c6d5508381de4b16fb51c1f85d1500c30482388358d4af864f14001c1dfe6b16a8eb8bdccbbc3b9a7fada9b66d0113d043bda8403fc46992d3f0ba8ef5bd17e078e4f3eb9c0b5e02ea0ad809c8729a2c86660e90c251e622ea293279272c40287e79bf5dffe077e45e51c5860df790d944f9ac68c008650e38703cdcaf2f205be1cc9934998f4ad8e581074c0e45abc1e3fcdde17e07f3d77240e4b650ab1f0e3b6ebb77378fe005f8ec23278498c2600560f5e89733e08cedad21604831fc6d47b2d050f9235bf2e59d9b49815ad2a2fb479c5b3dbd29555127fdd6ab68d67b3820c7fb49a6f15bfab01ef3aab91600ce3c98499c7748ed2ca2fa8b9daacd5b768503c609d51d9e58d0b6984c07cb2c66d26e1e79795e856dfa285938ca3d1e045c48d844da48f304f389cf21966312d9f06cd647d8d223b7c12d85eb8a39e66856da32dbb762382dc7783fe20de367add6c43fa329abec953a6205aa61aaf32374c3a5f54bca2158313f1b25435a875596a927d473b58dab4464dbbc811e9ec328a411b2dbd0075f8ac3dbeb31b71327f78a2b7955f2b4a61e2163e51756e6c3bd0d8cd3027885230e13543aa19a7186c4dc65aa2485eb9311ebfd0e586adaf56ae72291853a0673463606dcf6ff2e5983d69252dc6be618806278d4609446413918c39a414532d5eb600a10afefc37ee134b8448a66c9200a26ffcf9a9aca08ceddd12fa268c01a94ef2193b1c3703db672a85e8da22d5a4253f6c37c1f6acf4c8ea2ed7f07420e0b018d520c8337fd21fbfc5a9843cbed6fb11004bf46ab43fdec511dd00a554119945068c309d197a1a9e937233c29fe3235647c85aa741422608ac921a59fecd20c033e432a22726a05299215280744ebe586262b11c577ca62b0f07973930d9674b943176eb66a77b0f922f41204800f8515a17e2990c8f3c05f5deefd7394d406d859963ff0a2733b8d430884e4150020738a0777e8e338a135369021e7c6219dd0b6460a48f71a09cce1382558ec289bc00d10e2ecea0d9ff39bd470cd1affc6fcd51e9c22c3989a25534960f1e9309eb5bba9f2236de96fc61b903b9c7ce86700aa5f725cc2bde3e232691fcee9c53f46b2d9a4163ccfbe15c2e770d97892a0751d2b2157af2cdd8b77205d885f131929fe10b0d7af6841d02034ccfdefef6e3d217b812dc7ccf0025cf66d809db6e6ff330fe7421e71e777e985db5a8118822ba04b526d6e67c3b4b31a7b7ddb621c32d51caeda2eb79bb4aeb49add56c5f554ac2758fec56f77f994675e149e1643e6eb03303cecf38a8777a147699d608e5a9b5039330c5789d6116bcbe67ec25b812142e870a81e91c2e04f6796bf22f359aa7de218241015fcf839af40de5ba8f8f4b9e6da00d21064efa6c2c283e130c605c233352abaa3199542a735aeea5f2f7c304aac317a5463b48b25609144ccb79334926320d98d499442c7835f52d5eeda1e8db20f20170d1078ce78cb1d3760103748698799b7802e70e2f326693422c9024c74d54f22cb1e394ea1fe25154bc9af6cc1f4011f74d9e861a16c166e6f5625a7f6bb1fba8ff0cfd5e713f9962a232a2fa651b0ec10a85fbac9704297b1ccc7f62b5f36456e85690c782ef26328da2ba583f5bb9fe475ffb620e7c96a84757315fa0377fac86f407ba46ee95da4ae6eaa97e5a5ac01ef576089e8516f726b197dc202792539b96a17f0aed5ad9ccf5f98efa4b32701a6cdd5d7af255643c40ba5638d1caf558d655f259c2f6a9aeea8c592cb23460766ae8ac72fba2de76c6496e4a681ca790df06425b0458ce03d0e108fe80938f3a4acba4de151b0811134da2d8072ce30a356ef758f8e47742645c51d5dbd4483ac38c5758442a90201d1a6b0d12bd31b7b0bafd1f9e5b54eb77cfda86e70f8d6e2a0fe63b828c303ca054e89f44f0743d6e33efb4135d6c9dd4ddeb8f34617be9cdbc1a6b25eeaca7d1479f863d154d4db3ef7dfc9378e2661551669294425593c47c768fe9e5786e1bb08fe3a38cb195cc8b6a4a9f551f4e516a9cd32a78626cfcacc423cf505b4718b02dbc411df118004dfc0b615e72b9a881b1ecb0d9dc3d8453c656e2b4963a3cc4a06bbfee280cd588dfcc7dc5eb0481ed8018ec50d3fd5bc3d0d82e90cb965e313904cfb25658b93ad8a5ed62cd1da3da26c23eaa7f73070f34d5c9c302082ce9dabee585c64de6d4f4640ee7894e683777867833352c1d0726b2710ab6525ad2c6ecea6fc49fcf32579ecbdbfde1c5a5f0e45b6fbeac0fe39c87988236268fd57a5a65ff3a3d5ca903542241ff1f48165bd9c2d3f4312201c86159dcf3284f0867c124bf01b4264efc47d08fde9fe86747b90b31824d2d765869599f45605805c1fe4113a59f037079a90aac80f8421042f65a369c01dab0cb8175f0189d9680d94f4808114aa963c997f098c74b432febb838fe300ec95f341087a8d188c4c6f92eccc5200fdb192747cbbcebb63c00be53dd03a8cb6d871c34a978c271e9b0a9a22491897550645612f3066ce3a453b5844048c00571949798cad0a071f23a87d4e4c4f3e7fc919d03d6067165792e91c6cca12c148c2643720b51f75d59c39c6e49a5626efc10cd3bc32a5e4346d84cf1f90cfddb4e3fc2ee9bc5364a59878c9926ec1317b7bfdfb22ed5d1db1aa06e815556e0f6dab55801f2c3902bf35d8ee21616050f9b5143d85cf23a72e487fb7f1ce36ac81e177a9abd4b7029c40433bcd1247e3a9d49d77acaead53ac798f59ecb6e80b6ec5a8cb1d02ab3ca852d474589b01d69308be541e4e81ad87da908daf12a672199079d085ccf9b4a7e9c083c80030430ace78b3d13b7162a3cb9496c6731cda6b0587fe61d9f805143a479da4a685115a83e7a7365f41d0e42d6a28a6968ffaf655e963726bf3a3706d41c2ba1bcc1a6428146037fdcc7b30c6f7a2cf3a3711addf2c021a9444b18a6c3daf5d0ccbc8f349da2ae5f098da7aca211714da4784f3bb17cb6c69bef1941e240ce08bf3f60e7d36a9582230a87040468353e0b2234c0350572fe0249fc68ff3fe5b174f40f23a447e1c03757c2a2b679e2543b9da7414ac539c39014541f6dc9f1f529e5e61858b04ef4aeb77c5623838dace50c9ae2c2b478bd1c54329e95faf9a38e9ac0a53c542131d42b6180149af3be2a5c696c295e096ea55986d73499e5f7d1670dd472ccbeda44b0ce696c395f6d39b2622461387913e751ec389485e81d67485ebf6c454631be9a37532a6adfbfb281022eebf441f637c057f8f9b36cfff545d02f01db1d2a8a6bbac84f36150f1da6fe6c29f3542b67afebbf3df0703d73255d4a97fbbdfe44a176b4786b35d57f6087e777dfbcecde326be4660e122c40d61d143de63902f0754032883d44c228bc5ab3e6a90b04912f628dc1215edced450a7d3fec127d6b0424e0f08b6b2563c8e40dfe71a03272aa949a1cb90d42bfc27e672bd0869e8edec3106608985b01818f65246e781c618f6a8cd1730703021020acb3a4aa0c97887f88983628aaf744816b6784a8666e95430b3d4b2541ff01d93d232b977fb0c07441ac30112bd478b1507f5481cf7631d5ad1de9f64681b304c5a9168f849a0022fa71f61e5c5417105c756753f5db7efe8c88098d0c97db77a12ca5300cdca41b15a5f89e93aba9d7b434afc6a0e553bf58775de6c83d9164357a5b4c1db2908cb98bea1f33190f16178b0684bf27f3028b4ff2cc8f0b1979670c16954ead0f0ce0c2b7e90d91616f5ad0ddbaeafdb6c5149cf99857028fad5e03891efd0ecb3baafc9ca0f377ffb5aa6cb8cd87d9ab3c1f94eca004824842289eca0872c3c2ed0cdaf75809b7e7ef6d42a5a7519f8749d4abf1325c67ff6af802e12607126dae13ee36eaae733c5a2ee317e93fdb71abc6ee0709c8d4c810ea95e3002050449a9e1e29b9536ad852d17b6eac3418f7cc4a9960c4da67895deeacc17a7c7d20de93cdda091ac51fb5c1875bf750f10d6483c5ab4d461eb3e97ee8e677574df2f7cf3583680b64a7a7f493e088ff4ca8f8c9db8209d1d546e75d9989912687aa8ff82cde8878616dc12d2650f0d12a66a89c7412b81a158a929ab57f8f78725eab5f8f43762f9e3166c8032d914e2985ac866ce73db8210e0a016bbbfc5326beb1bf252f7da8d9d4ab607fe2cc0025d92e849297d3907d1932ba292e0afbe32a40cec597afb13d3a21c9df4608bc688cedab02b9f4c237c8c19e17ca023a786a943c464d1d906449eba9cc3656e527fbcb7bb9cf4cb1fe557c87fd57cbca5b2d5233112ad29050d6296659c9da8326343c95833daad660e47c2b138d85682cf0a101e996795ec7d9b5c6032543b02351a0c1caff0c3b70ed5a30337ac3e45ad6ccdc3ccf206dc17b4d4771e898817f03e45cfb78713e9f9aa6fa2e6362b9da94f8ede4d9ab58806f513fa9d6bc7a839305f271d493c853bf672426655fadc89759ded4e05a6df15339b896df29571efb93f45abd94ec00424ffc98f79d0280c8fd88e1719fcda5f86f9fd99d6b67606cb0f4026196444639a0051f67b48b4be33527611233b38dfc28c0ca6c572bdca5a2676c8fb0b19b8ecd6341498dbbaf451b10330de81dc3149ee8ee88d31c05385a308ad011d5cb3ea88134e0dc18ef046658b9d70a70a199277700059b54c7745682c9d56c07563c26b0d2a6fd1a273d0075c452115b7c3e24031ce54afaa34fd87bf42399a912a1c58fb2564818fbe5b1dada9f1fe5f37bf6c2e5a928edb487ad5abbdb7f677d5370ac7a5f31c6c43ea63889832c33e0d891f6866271b1efedf37b4e54e5500eca3effeb028ee35d77d90ba1bd4d71b606f9f48afb5ac1d1787d34a594ba9e9030636134ab76fbc93cc7a618791a611ed4a95aad588a656e9199726efe54b8f023954a8b9c29c6da4e5630b0db8acd5116e5ae41d0fc91336b80c59004cece532b234ea138be7853dd85c5a6936ca73e0c80d6f3371f13c0afb259b2aaa9aeadc92ca7179ae4b448d4d31df2e8d508d729e0675e20515feb606de564cdca5cab1f43d2b8936fa840c58458c67de5ef4012b4504e3dc252fead7f2670f6032faffbc0979ff30a4b2eacce38b7b7679e3de7f5cc8805aaa3c8cc5acfa0c2a89b24efeae4c8d72a996a362217cbddd9868af56197f3952204899c67a76b141102fb6998d0c7ffbcbac1e8a25508f4e9cb051a9fdd15efd78a266b485df89e3a956b8aad1f8bf3c18c4cd116e4a07b878fee9492afbafe3b7e3704fd81f1fbc6e5d5ab01488c6724910cc0c88bd0822d8747696f70f84d2da27967bbefa58da063a491382e875e53af2cc2c317413a53c2106468ffceb97fc54e2b06a0eeece14e1aa2e336151a733de53582a2fec19ed8373a0673d2f0a5dea07711497528aeeda4ddce26ce368a4841d9c07efb3b87a96965c031996d7377091702f1bf89c72d455abd0cb2e8e26d364af2ac9fac6f28a7f05bd84d83ec24bd96e0072f6bd73cbb46439932a7ab692fddfee5796c9c1e33541a1994bda190c2ffe064f92d863b990c39e9ac3c70c4eb8f513db64811e4793b8b1649995e136e728b6bb075ce339b3474dcf101f83f643763fb92512dfa23281d5adde8dfaa49db222c13b4b220527eb5334a4558a829396ee5bc2a1ff7cbacc8eda57518d0554e687a12fdc7c246c46564a5a7c61c6b744478bbb1f2873aaa4aee184222b686ab8bf05d67e04328c673f245465d581e008192685053bde97a6233542f044170cfb2d8428bfc84481d960425564309cfa580dc1cdfb9c1ae07803442940d71307b728540089b1922d40f63baa785d9df730e002c8959c34446f6247535704b5f6c97da1e5941e5172384589f4299a82eb9d450c96fb0635e47721cb40e213ad78302b809481e96cfd376013bf7f0b3034ef25e9b3c813ecb535aaf834f5d02ef5996e580a8d7648e67d179e528637a8ab47e7d8a96d2167d38040701fa753e5668384b1f097acf66ae8ed908087ea569987b5ee927339ab3aeb6e15e99e7a36ee52b71d7a1aaadca2dcfe7e7b8dedc977be1d22b6705bee8f5b8868dd93a485951e4ab63329d478d82482f8806b2a40d7c095208af4f8ac9844612cbe55c90594d096dd60ce2146b0d7faab4ea89364bb15d059b61939b7f94a7a91d50dbbfffdf4c30d51b20a31a3c0118dd504bc40319e2e2010992c2f9940a76c3d44342c3210ac60d48a47adb3f371d7803e1d331b1638c13e708478829b269bf33b941adb238115a8184bdfa04bbed7deb41eb26d86e1d0bcd6780b20e51e9bfb8221f9a1f5bbf109152266651d7435f80df670db7b7463ff8fe471896312aae754100d89c76dc17451b5294f1bfb03b99f32a36c23f8ffbc38996e5008717093c1243153172b5d483ee77ff211b9f32e161d9a93ce9369ab33be2c61ad5bab950851c3be8e9a75c32cd3eefa7ce4dfd3f686dd8a8cf7c60846da7b55d3a63c3788dafa91afb8103306432a7e428970e52daed6b581e7974b713e56d4a8746adf1fc6a259b2f418def1551476454bc619ad65b923b953335d633503377af71e778c5dace6ab4fdcbebb13b2c769414701aab56eb6771fc2d3631617d09fdab7c1a9a9c579b7855a5fc3c428270495605504ca9bb764caa421070603763b32e91ef5b96c2d292ffb058d49ab817497c70e9d0c9818e1ee1fa777d6802e8a37b11b625133f48561e8df353bebc0d57d0968f2fea59bccc6cf2259f1ac125d2ca8ce19c0a0dee71403ebe220c791b8d5253b844cdb878e284cf27d5d963235da9961a65b42303dff3cbc2b79fb7059077ea790d01e15662db1fdac891012fbb560760bb079e888ce0354ce8dc9985d95485599c89b4f647da4efef8feaee094686931cb3f97dd0eb9a7b6a0b8bf2b3ae75e72e6770cc871b0166532d3e10d3c30948277552f73f282376c2e2c93ca0c402c0d1bdee9370a4133d28f4e936e0ab9559f5d37a12372613f15dd83f9b9f7f3a5ef433728028919ca144a3069773022e8cb2c3c85dbd7955449595c75018aba4780ec894e57315c7cf48329c9573caffb5deb64445117e2ded4c6406dbee936e0040ecab72e37eb697abd61f3b88a2db204fed2aa1d924c5623895a6e9294de1579b35c604c195e71b1a227f9f77675ae9ddfc9c09bbc55bca8facce774909218cd32c7887911de9aad81d04a8e6666a919ab74780708eaef3693d063f74567b7c32240337e3867c5f3e5b635356d4b5881ab292046b0ca165e5ed0f6c291cf0e48b63777d878bec83bee8f7c9eb19f59d35974881b50acb8e8268253691d758b621c100ecae20f7590fcfff9a4ada4ed1c99edeb4faadc026b7a2bdb8fb77d75fa88115dd3fe47c8e87d97fe5b328d1aaa1e0a58eb32ea1c6540222bcd184a2b52bfeb272db82e63900ea3a98cfbe59401274b7f515f5d7d0d86e1856cf5d6fde423c341cada30e00a13cf59108c4453de4f8e94128c2a3f0ccb28cb0c1cc3eae3f9137781b14ef7c18dbf2c18a9afaba5b36b70a0b7f9370984b04056771377df4bd1098007009596a886d0e7b78a1f5b28fb21ee61458b7e57874ae1830be2274ed485ba1015806c6d9763cb433cdca662351d4f10cb82b2edbc546c28ebff0e99cbda8eeddecf4917c401582d400d9422a9d6a033c27fd588fd6a025e35fea2eeab47a090f61b58396b2c741dc27ec0aa934455be3b667eb15f5ff765daccc9ba2c68ccac7d798715c857c5c26096d8e0473a938000a0d2714bab4808f3078922c62c91f73fe22598e16244140b92f57b9bdd829719a6034503a28745874dea0c0ae3e55c5e5a040e7a7eaf04f40634d037d2eae76f54ab7aba3f5568469691014e5c037f5900f83609142578785aefb2b47246750c175dc70396f2988f18052c7b6f5eecaf4240e6968a47196d499db504abaf4a13732c306fa2ff059bff98b2f60c841c5b2882adf99be9a9d34b91ffa7f5597ed8eb90b411487033613cdcb4098640f861859dff186bcbcd0b12ea9f860748a051c98e4ea07f4e60a7f9ba2a7ce927ab9c0719bd418ab0e86ad7d566c5a4c4154a4bcfdea7918a11cac356aad15e26515a48959b36fd42a93befeea1758580733ac74e316acbf307aac60401a5a6ce3c4c5ac3acc0d60e1955269425901a48cac9b09c8c189257577f4821a6fef773b0b2062341355f48f1825fa749df4b1e34cac5b67817d1878d2557061c997627b936aaae544903ec92a48428b006a1c9f52321336358c48cf14acd643fd892f617984587079ba5307a42460a7d908440556522b1bf970ec7737894d14305619723cf5157498aeac1e83d47339a16c67f7ea4b347e4085c47d8a486a25b4c903ba55b27d8ad51da3cf6ce71815dc73ade7fbad300fc7b8016312790bc646a766d5489887e6d7db06deb549f31021adcd22bb4e775dd200d52331ed5a41ecfcfb60f154863d24d07c8817a59d14d7c426031fe7e9f522828c490930e14adeef773dcd011cffc8b90f158077060b13a019c3381bc6250f153f19dbc11674f04fd90483482028758f2876aad9514c88162b50adbcfccecd333fe7a2dd17cbf62563f6df92428147a129ac57521409990357541ddec9c51e02979bd6f41510036748388f4c182440f402e5a1d1c66235fa3be43664182d9487c7e871cb4af4ebdb4bd5d3b867cb5ae4c796fe12bbb63f94bda242c3c41e5425086788b169ca05bda5fd03b5de84caf6af24fe819bfd7a09b999677b6dc8775ad7fc0dde07dd01b5022b777e2ff8c30da4e69b3c7a9481255c10341475631ed49e66f7c94be1e8805eb6ae32483650e675453a610a5f223e9b54303ee33c0cb7234f5141af2640686f93468d2decdcf1dda45f92203a105a5c2477edd4dcb089222079298a42217088ebde300599427489d95c5b980999762f3d88bc1cd4f7340902ae046e06dc0e0cf569a7a67e7ea1ee45bfa81b9ab23c9c730264a9c1c43d2ba4cf750b2eae6fb25cbb8d930b199ac84e89854e73fee6947216ea3ae8495eb17e8d7929d336b244ea1763a368df79eddd1d8cbcd2cf3f3aef705c4c335716e5be49e3b2760fc629562530bb0fd2b864d98676e763a6c416f2b2ffa71ab99ff7f99b3211d775872acf64db3c9d29520b18fca2292a7c7efcbc87ec4037e814da205a6968c15fcb0694e3ba470d8126cb7b58375a5b8292a05be5fb08378dada619a3e64ed454f024afc3c5980305012a7863cf2188c81ddc4b53714a0dc8c2df02c11d41cae75aaffca6189f71516a99611724a419e63828c59312d4afb263c6be8d8bc7329d22b8f296d5c6475edde5275edb77a26e7915053c71fd5f4f9f526a4a2d2ee54ff5367ef66786db780fea870e024a0f4fd92ad142b7bf10d02acd7cc3da1589e08f4ed096a48fe988e34d5e943c0efd1850eb2e77313903f496768924817c9a04dc9b26a2b6b0a385088bcb64143aba776225c0df26bfba0040ef66c9d38aca100a607272de0bc4e1c32f729cb32afd38c274fcec1c6aa62c56a7674483dc80a66710445f4e62214e739e1d80991bd80d4a1561b8cc87a27df1d2bb7678e6aac124c59946f1b09a7fa013068dd7a6ff28293a36b929409aace817752b5c2c3df9c4119b43f5c3cb6944b24e86b7955694e1282e878ba55075030b7d72e5495248aadb0623c6e64dc828bc205b33752d9686dfa746b852853274fba413246555b62ec113106f4a723a99a7e81a22431889f225dc04df303f47b1782afa1b2322c982f7ecb9b61e48c25b8d19ed791b689493956db00d20d97c53a0bceac8815c2a2223ad485242aaf238b985599d4cfa8735fa55819373ca06f5050df92834a194e964eb22805382c1d3f6e356fb6aa9c52b41ec368f16a2d3ba9eb5ba5719f8be3343ac8ced63243e40ac1a208ac2591818b6c510bff4c14d6cab88a121e8681585b7c131cb4245ba70d36c41211ac4ea3d9a1ae5508e7c9b4bd95d7d2e1190637cb42119a6368f9695345bf3eee87da06bc8f82aca123f6bc532b2cf48686c334a3ca75f2cb4d8de9316a3dff5bd804c2c09317cb27d80ef1f8ef46af4790f0cb898537de83c0e04ae83986c79e0475a0e564aa0fb5a3edea2567ecdb8cf444e9b28b10f09033cb1f56d49d92c290dca784124147b521dd7b124f2c81251d68498878178ce74b20dd45fd1aa8393ab52ce5c7edadc8b142b16a3f768aba2cefc653f12edc6c117a27c2334bee7ea7f66c514fbaad79766a76f8c0f5b50a9c5e2e0acf003f019bddbf6a2e84a34edd109dc9c594c549c521b388f223268be34b31c51163e5b006c70073529c76365526c15b129a18fa46ebc6570338d5431addc68969e90d61841ee4d5046a5f6425645c81639bae2e822ef84fe02fd0a75b3aec745aadae01ee00cdc80fa70b08f3e8a9d5685605a0814ede18acedbfcd3ed00fee4b17cfa8ee142bbe76fcde7afc8b9c3622708a8de70c2f4d6c9a6ef0e5a01340ed57ba3eebda158d7cdb6b44b124397c0c62435c17b7039332bb2f7561c85518e4d72c71368ffca619b1c081a2de480d9c514786f029edb78ef598389b711b869628f98ffd2d13bfc0ac1229f86ba2ed73ddad35c934d9cad9e3cd320981dfdd3c86b32badbb9b43a3784a299b3592f5e1d64c484e91855b07ee275e11ae2bfe4a133e1ac2e7068972ea829649897f24ca40c8bf7f119c3bf7dc2e39235b686e478428a5a85fabee5c19d9a323ac96a58856020f77d9a7e7e76c87cb7e58fbfa830b8f20cdcb42bc2600f54627925a2911e60bb75007ceea9df0ab7ae98e8ff1660343e6c6776350de0bcb7897938cd590249eb55b07997f10e956640c3144602b6c5d1f1264c4982aa24580d5fd31611c1d8dbeb640fc2b5f3bb10505510d2c6283738581e1eb64e1ca0288eb60fe143de9ede59a91295cf9a92e9667eee25edba1f851fa72ab5089a29b2f24972952884faa8922109a9a9e0888ae7b86dc4f7ab12e58ccb7ccf4315b966637aa9dca32b923b8a8fe32906c4c2300cf142a245b8d8220ec2c3d534f9d0d1f24894df15ae00b0df460947e3ee08a2a6823de722b68fec37fc61f4ff07999c0e476bd787116d6098a0e06dc17d5f98be4f79b8459e9e0cdd1f2ae877002ceb5ac4291ce9900ccb8853376b39190171a1811c0512f5a54adc5c1140d5926d7875265b7cea94927d061a6d089c7b2d6af38936dca4f83232d747eadc088fc5adcac7926452baf13038a0a0b8a4650f8c9aabbceec5b034875415ade11d051fbacca63fd6440229e7128ecd20f351a499e0d74f990fccba7d0ac574f5300b40aba793202fc39deb7b6d5a2abe3d21d63d9da5da4ea06ec1d5df7f53b8d5f008b9256d627fb604a56c6340343d07e6afbe127ebff2165598ff3117f9984754e951af94c9b17cbd3a4042f212e49d59e3e7e883677531e695a91a2fe3b2718af77114d82f4e98ff521a9da8974dc4aaaf00aacb9a23b0f7102f7591d260c5d150ca0fc2d7b2bc31b7ebf5306d61b49904142632bf761180befd6cc30bf69b9d54bfaa3662990ec3962027f6b2da735864f86ae79ac831bc701722428277336e56548d80bd66eb6299a587ce818c934c901736e3fa54f2e221439c7b00ce4d36695749bf1c2ab8cc17ee1d043edc2e22ff21aa265d9590806501bb517588906aaa12552f94480dd01d602d105239047fbac83ae46d86e5dc71db56a3150bb5f36123512e63342fef3db329978dd825b8717b21e29861351db50ce76ea8e44ec55f18dea8d472fa43e753f0aa4ec6172df9dbc7c4dc1cca0d42b57e9f84ea5373f9dfa017e828113039c2c52e9a622fbb555d9418e3764281f5ed2c76085e5d5ac1bad075ae6bcff90fec558977225823e7f067f34df0069b580688efc71831bedf59eff10a73e6111dc03099810eb829cdbca1a6e713079d16a1fb72184ec11ac49a7ef9b2f4daeb8b0887ae57f0d6384a00492446c2d753c3f70afe6dd9d58421da2b4acb2984a9cbffd7c0aaf9c89e321a08e462492be99b083fa8a5418f906be6802632a37bf3b90df761a39527e4686e1421d02547dbdbdf660f70e982714a98ba8cf7f4da02249b1749307693aa32b340a478fbc857ac2f2950926f01f72482088712035a6af632dfd0600fc49934a4f338fd4bde244bfb03cdcdbd035e475feb32dab0f8246ea5af1b3646e3aa159a463db6de4e94d871a222bdb30c9c7b88162b482d435310154ced374d84adacf61a68fe0cea5aa7119379f853724cb690cf2e2b597ee614ff158a78cf6f4ca86f116119b0c6c3a60d2f6a87d3ac1b736676daa679272e0e962ed35b2019ffd42555d012f029e74ea9200b74b49c9aa9d5c124462b60844c5a19d921028b73e3ef243dc7e04a383818284fc4ddc8a12ae1135f0edf629891a210b326fd3076b42da670cbde69355ef44e08883ee071089a9505efe1dd4e59da91755ad23482cc42d5710cf312e44156b46a805e281ef76d2b454c0510dd26bc9ef22a3f31ddc888372e1883fb6f508fc9cb5f410c7db1f7f8c8f62262fbadc855a17f4e808c06974d5d7004e50b67c987dda6818139d25b197ea1a4c375359d59bfc81403a9a7585a292813b0ba749da79729750285c72402fd0fd2ae24a5512bf53078b6d5e6c4f427b4a9d6131842c115e6f1663664b81c92ff1b752bd9f7664bb348c709fe3d6d075b73c46e44da138a73fb160361e59a863f77d2c06956ac5ab3559065f5e54123b85a2e6cf6fb5a02156cb53cf9c0cc299e2382f32e2e23a54891f76e6331c6939a32b7b9765681e4fbc70c55c9b370c77dac3f43255c3da910224ad82eed7bf55570962d9990041e6d6952d639c17c7c567e3de373b82db517e9d6b843cd0bbee06cbf32cc2aa41f423104592b1671f82c0ebb356324417fb487a7a86f205dc52806c130203048bc02fb38d645fd8b8f7c2a19c3d2396b99249e5f199a10134b6063b2592e25377bed23dd08345f518f766de52af4490465c21b82777a91a9aaf2db0e8a637071a7424266e4e87f51e2fae2a04ce7c2966c15b97529d5b5827db11c62381a781a57f472fc00998fe597234820b20fcbbc10fbf7c6e802e9acb34f1b8f0208ce435e956735a61d9606f27d3e11817a4f10c30672b141a1e37b72a46082facdec2ecceffceba9bb59158070dc24b0ee6e8eb8d10612046709e3dfdca4ab29c98255ea2cd594a7f1cea6bdcddd23d4a513a4c6b364425d8f5a9e5890c5eaf859372abec1095f307a04f982fcc5353cbeb36ec5cd495d8a27b0a115f6186877fd0d37815d763a6612f13d5c664103bd8321d1667c667a7ac4f43c750a53726dd44d10ced7cfb1e535c6c670b8437585053bfa6bf51b0240af88296906017eadf3131313840dc2fcb28f6b02801214b369435d49108afe0e3ac3438ecdbf1ad9d90ce2ed97015b301d8862fb8cf53d62379b715173acd26084d3b6f42b4d2f42e68c1601396ae646b28c9d0d95f75f6f0113cf290f390f84928ad5153f3bbc92775b93b51d04db31effa70211919566afb2681a0ddab5ea51b1267bfd8b4cf7e79dec1b5a4f69294cfc642c934ebe263c11eacbe671274f2419172fda0367d95871effbdf8a15e7414506df3cafe47d083d15bd048f02520fb93012e99e1989027b80783b8b514dcdb12b9cb98ecb4704921c03d4e5606936b3078fb0872d08a0f2a908678d749431c5579e552d46f085fed466e2c291ab410298d062ebc56f6213d3c4c002c8c09f253f1cd6f84622eca1c482627d0134d2910b38052561f1e7219001ba4756b3da9271837caa400236097b0f338276b47218acba751e017b80a74ab12102c17e5d578990d49680ec9eb1aa11899d9b062b4f623220543c3a8ff4a0dc95f28999c05aa2a2a8ca6aa2aecc72eeeb950b1006cc53bc5431cd12fa38ce0ee782b75473dcf26ca0889d23d8048427f4047230ddbd328926268527d2cb1c6288a382cac1cfca12a4bcfd0bbc62714a498001c8cba6ac59da7233576b349aa1cd97fd6be7b1f79725a20483f476e60e5c2279621dbf15a5ce972315eb049c4cd7b4404963fa32563420464b2aa574b8b3e8075f4d7d543a73cb31def9fc59627e5547c4cc2d8c12365dcece7886d9c762378979d7fa0004fe26ead710092a550dcba47d599e92b3a8fabb129efa2dd46c87554a982f4e398ec6f994c7968e75c05bd6abd4ea136dfbad90d3feaa28d4b5344086764715450be6e7b283783a71d11001744208a629ec77e4809a70dd5e7ffc816e9f65e48b0fcbc71c52acbc37a3abf9f780e5fbd87aa64356fad6b6048f3a17d68e1b7a4cd8095e99e78e421c9233d3e3a567964f76c43c50259c9d9634c8b008b5e5fbb180931f2192b8adab56ae75e18c4cd9f5983fcd9cf1076178663dcc10d50d0af9a6a6458321033024b46c0bbb870961597a911ea284bd9cf5984e123352d34151bee45530c0407e4f05a932e276aaef7e12f568daf051f047c327cba3db6d52dd2a1222b99373fedef6d284f8f9b192383a4decb5225bde1234d2082e00c0062c028c20b22512d6700a57a5c0535f20c1baa0730110753f43b1c707e2cc68b5ee57cc75067c08ceb339370be6edd188ba02c3a6d0724364e70ac53cf31656f07d9efa7348c396ebb98b293f6ef140046cdba1fb5c47d6fff7cc9b44ad2a796012c74c7fa899174ed019ba3e8405e9399e9ef61489fe64384e5dd0263fda3f2c0f2264f4f9f5a9c6708137e13315ab0aacf5c8c7e22bff2b0e5edf7e9742449b81386d62af71b71bf39f315ba7d53ce4ad3b65a05a0977a1eee33f497e5e56df6a7c8aabcf8b7007d4f765c1f1dabf85e8e18a0d5f545c577cd84a95530107079ccb89444c94bfece981a21c8d0b3f35ffb86d0cd67c099aaf4a4e479913815bf78bd527462269c2aa28e39af69b31bfc900cdb8620f2008243a060d1eeedc9817681b23069c6de1650ea7fc359f2890aef99660f05f358010775f96ca2044a839bc9d2c9fd2db8a5483961bd02b49626eb53bfe50e990888b675b418606313a8510e5e1dce84b6836231355ccffb151a110a420f114b0e922852c221cb8cfa07107719edf8d8d3373f48e2fe91af752a6b1aa175273b49741cbdcf4fbc01ab9d74cf6365c06ba3957035dd1476386940bcbf3093bc14e7a4ed429597b7fd19ec8fea861050fc8abe35739f8439c9dcf67c20cebb80a037573bb749e2024749de9f34c9e21b87d3a978c4dd1a7dcb8db9ab6c6cfaa649858cafb31c189adaeb409240842bc87f6e4b0dbce3df06a0e9f57bb9cbd8281c859b8b7a2f4af4450b859f6666e7ee7a5119188d36652ca8959230d96df5db9c3b5d99c5cacc3f1af3b4773dc24d9bedc3f7945b13314c27186bc3f14c1f5e90c169f8c994611513a97bd18bf48c634db8980fc6f2bf0fd84bc97f08d5ce33d425e6203db7de4c2fb72127deaf1e15cebd5de5eb6c2bc50313b67eb0e049edf6a0039f546ad1d5686f1caa75ef4f54ad19cdbe7b91d1e6f61fa8ee4e8dece1adec75a601c1a53d9b7eb275e9ae0402a44e47d9e595ec7bb489c397e34b2d29e1f5505ae108929ef3de0c5f7d9cec6d571bfe81096720b76b718fa25ef91918e7586c8d1c5839d5e3c922364b63e38d2c092020aa18bf27d5621a7b1ddbd6b9857b73bc0566fc00cc0cf69c7a35412294696863137c1a122c601698aeac5929b77c7e95428a42c05c0132fb49a9addf0b73c05c8c46efebe9b5b7e48070d3b9f086ade1c8dfbe0700e4d55543fe7e1c4857ef84af93b84e859de39283fe895f7f16d12632cd68b3943c9c5818b369f86838deb7f467c461947483cb3138d83374d973efae90f01555501bb27266f8f8ab13344785b2863a6e072de085ed30962eed237f69e5d6e7f3f851bba413cb5add44f36d853e05125e3f598184c7fd6ff8d51bd7732c717c07bba481a95cca0cd0611fa16c77c803200f6ca6ac4f935023ce7eb787c202aa39f7a1ad20fc20aa7d07d2b4d5540a9736017de30de4b714a805db548e8c847d6cfea7172564b83e0e0fb448f723d3e4d5e4b060cce62f08f4b95b2968a1ad4397328fced321eb60cd20757a09165607b16401729a5bc5233cfa164da72eb92ae0b5d0f2012eb77d12758d9ef04c0b970534b2d7a97ca7bd4a8a4cfa840da7d862c09b7e0854bbe98db4d8c8b6a827c7af69cc2ab437404f736804110d2c35dd79a067bf91a0a9cebd1688eaf70adcb0defa3a8ce174d43991180752d1d353114317a5abf3e6a4cb9643b6112825b5cce8b70aecfd76396b762427f0ca4e51ec6429e62bb90b3e594482464fad163609afe6abbe0420d55213a7ecd9932f7b3ee43336623e39c7ce45bbd910cfb4bfa22c1d86249ab2983d698edd93e2bc5399f8a5f7ed330534e367b7325871137a9ff073a8709c7e51499b16b46ec26314c83db837ab407652bbc77bcf1a80a6f148da37be9bc635f7d1adb43677702c787d85b8353d10c515946bb5dd0c2048c0c2d3466c918684349c23123346dff249b113a5656ea143f586f957105daf7fb209cfee59b8c9209c98e543401db6e2a17924416ff9c5e525c35e34fb35cc4a96679eed86a10d7373da1b1c89d22dd170fd6afc4187cb6d134eaebebbff922a9b941efa695bed054dcfdfad7c129b3e63afb2c0ed9a11b366530a0724b4eb6020c2104755847d1c392e0050e11ae65d9bc45c379f5a4c1ba9db39fcc0f518e015419637427319cab24efbcd369606029bae03e6a223cb2591ace398abb55c59312d67fdc2cae8b64b157dff3fc6689241f2bb89a1d37ac2ec0a3814b525d1af088a8a58b2670cf736d80abbe62550c895bc0094a83e53bbd6700335b4a65088eefb75234957161a922f43e6d0b036d6263744af61d6fd1dd970de9d9fa5b3c5e709a49a248a8d8ea808f6049ba3c8568b4b811d148c5a1ce7f0b240c9d30704da25712442d76f03fe563a9506da650a4fe634390cfe8b21bd90c1db59207e607ab49f29c837f7c390c24317c3fd69dc9bf52754c0960b251ae4a037425a760650635962f3b5c5fa7abfd76d5e0d1eb17f7cac7efdff73adf3f5bb2060a3095888ed3495a20eafd6042a2a4cee2aa5726e8e3a6167846897f630201810934a0c95a2450ba8049f62d68ac9baf4464c2465dc4d5cfb5e7209430d4c2e720a4ac4958ecf6082bafceb3a959881df8ae333641910591a4497e1e101c6cb62692abed8b17da9188e59d605d5b2487f6e320ef0fc0ebc83d0dcacbbfbfcceb04e20d0b52960dc18f0c8a96739ee6cf3bcdf507b44523bc721e27322eb1bacdd91c775ddad5420ead605f22e407e3ec6bb2df6586b6ee39639d0ca191873eaaa7e7741f6060be0fbffac59f58962b504b6d209fc040077dfa0fdd13e0330d18a2268bafa98ae8c5b47fa41a71c7a99afd34bdbad4e9e4e672c340a812d5cf9daea79d9474bbe905e7a2195fc9e5b05c61ebbfe063b9d017966d6cbf662751753dc55f365b93e97125cf8e0d91af8eae868b170274458ec9cee19f80f5a9d3ef9a4e48a45104fb24d375b13554e06b04a5b338d72e9cb3dba7a22bb2fb755bd18c8cab4cc338f52de6da07e79969c37a14e2d6ec7bbd76a51391fd54e78e426c7bb67ea5f2f1dc520154dddef73b09597593f120ce1804cf82ffb29053a11870aebf5294ce9d09d2106e04117543b516e581e5d04f8f268dbef817a00e2d0af24450dbba03bf476a7899d5dbcf5693d1552971605b15d2fcd6aa7781212af019f30111135f7e66b04c3b8afa78d916ac937ae177814e991efc4553e3841fff43d9e81a5e2ed4ec8001d46915763894d6904ca48693f707f5697a28f41c74623ae145b39f92a588bd475301f14c683c9de2bb1e9ef22974887aec003286c4b0e91382aa62e3cd8f280f05bc428cc6688a1e3faf8fefcba705a999e4a87b8536475b7e7b4e798f4f88d031f1215a3bfc012d826262f63c138fb4a8e3dbf001f68dd396215e3c7f08b2b40794a3e738cf539107c6bd30089dd43949b4d904ed24d34d5ed038bd8b4b32c67e77982560dd34bf5707b41b41c500d541cf1ea68b2646bc727707b13d06120d04a5d6f5d3f65d7fa4796232c5b70b691d75d3dbc3d8e110513b94942c41a292bcf69b0afb0b4b845c608ddf1801a2a27df8fd4eb10cc3dc1cb6c3d95b198f09bb381249f3a19769005c919948c89310ceee7aa7537af604103d4ad92ed3491ee332ef302063cdf12efa69492d7382d8382673ccedd9713321574fe9dd0f39190f26ad6e61950ba595ccf65b590b68526d3f862525f26822d00c67469a40510dce3dda4fb90ad568156515998a3db2cdb502532ccd07384acdb5d95291602a41bcf9f19b320427ef8cdfa950b735c318592cba0dcd9563fb9772112eea62af53ccf3532951bad69060919b2e881bbe43d8b8469de6977853c3a59247dfeb12a434b08975b2ac579baeadd667d0572752ae69f051c96dc2f02ef60e60db4a15b443adf762c08063bec7fb1c86093a036f13e1b7b6e0627b86590f25654876f3703215740857286249fb25b35a486260b805563b7d4498c3e9cbca53072ccf3b807ada614c80eaf035b06e433eb535cf19e509b5119fc2789c7690e5ad8306572a3fbec1d8cdc82587461bbfe39a5bba6cb8d8fd01dea9277162e277bcc8b149cb923ee80c3c7ef909a6db431a09ac33dbfc26c603f8c3a0c6a204f5341c66f9ab234d0982c46df8cd29ccac29bd5a67704271a5b8e80991afd1b865eea7b0c83ac12cd8f0c555fc7f218c3f9adda8ed3fc13465944c13177fe82f81b866d8de428a906129abe61771b0d1a04a0e1637539413c25c9ba15e2a6deaed9cb11cb68c6fef48b1c743c1dbd34165b6080e82b6bc66aed510cd338a651b250292ba6a768cb2ee4ed64c3e228ff4053e868a07fc219c290f38f33a8aeff39af3d2abfc8f9ba9f45336b342334fec427d8117e50e1dae6df29e51e3b68dd1b50009d6e206191c84d95d452203c072c62cb6e9b85153bea034ba0d4808193b65c5607b7493525082e3e17415076923369e23fce6c60b15c7689cb84b617f8439437a7ad369d6060919f9de500105e0fa7f4473e815179e83acbeda9618e247ea4778c53c02af156fb04a3f7bdc832091762c4879f2f9f3f0941bb87150a8697641fd92c4fbe63db25aa82cb54897802f925a848c6e08f076b388f01584ee8171927f101d567c44401907ddc2549c798dc464f6bd068027227c2ea27beb9cfd4d9c58ddbeb3240543400793c2ffdbd535a38ca150723de0cf61ca474be91d13917140db29cf52f8bd552776cef96014f93caec49c0b9c474eb2c88145759303178027f949e6f508621cb403ff5d8caa7c289f7484bafd7c94e907b87b10f97868814cc50f1266f90d0edabc943595a853f32234103717274ba03888d926e15ffe26bafd5c21c209120076f8df17f7621c72ab1df3f37bb384fa410b91d5a551ee58db335cc0ee2c249d236b96859a6d204e7eb9928810c037089d201b935919c78c5c5fdcc0b54f54228e1517200708387274e545409cdcd192892b87c0db23cad76b408cca7e74252ac7942cc00201250c8a3d3e57adfda1e2ef44e79868437324b109ad588367ab83877ec6632cad1b6de6d9a3299e83b2cdd6d03fa1b20f22be748ccbeed6094e6ce442a0b936fb26170aff8d62e87b817400f9d9369714bcf171eadb9d8bce0fd5d36ca857cc19a445d7ba0b473da62bf79d79430efc3a75db403ed0d9ff9bc59d562c8f2f67f244555b0e2931113caf6fe7279e60e974dcc0cdd3ac972d3d53292bdcfef4fd1a0ef3f245cb70abfbbb42d8e97f397eb6178dfcd0d77392e7544698d99d82cf35bad2b223bb373a9c4cf9e592f69a186ad557411230ab090071d2d13edd7d3e5cd4840a22a84be31e1ab7582284db43e8d71f38f1fce391378ebccc5cfa18c75688eee2fafc9ca2563806dba7a1fc9c2d53e12ca5da0d09cee30fbb2afaf724c5f2319a27eb90dd7e82c6909b57375a82731ecad305e9c4cfcda3d508ef79ce47c5e03159aca101e8082d0f227f806beb6d3c98a8754e15c285fb5f2216630b4fecd3a9049a0700b0264f6b1ab1f7c96a2d73a7b93028ec734aefbacd24dc4340edb462e5ad1d5e0cad23a8f469679122f07dc8cf166e2b9f5493e9f9e2277911e989a1bd1a21c4b8c3208c3d35cafc6d8d8ec890d837c09b0489994b87cb3c5c2ba975d99fe76a16566f3349b62d6aa84f5d5a1a5ecfc4d6d5d0f38ebb127d644c28bbe9d6f60ec9f1d7ba740e13edc12a789ff3adc469ac9ce8ecbf6fe3f5c9e68ac2a8ba527d7a2e5d5fab352b7af0afbb40f6b104db31ea683a1d7c7c4243476461d3da211776e152e8cbb514a9fd6770a607f336c96f8b0c9075b601b0268e1e81876589158449c3519e4e5c27d70eeab00d3dcef0c9e565b16f7595ad6f68be0640cf758be9d73185f4604ed654de08a095651bbad25294cd74168cf4c39d8d14a65c5d30de510b6ea5d07bce3af9655325cc97ba336684a4d03e05310c1967a3c6403b7f343e77494d1cf2d2904951fec36d698c9d54bf052331b829e403fc7cc8ae7f7bfbba6b2bae9e4740f4e7a224ae560cd57ffc082a4ba22c4ec59a98cf771056b477dcb6689356425afc3867e0edc41aba80e25b60f3fe9f1c4e4121f0539f433d744bad897d230c9adcf4396e39830564be5481a34f36341068de21efc82e78b99455f23af89775b71bef27221bc9caea2467fc1b63ca163803c18a63a4dc79d5b21b54263a2a0117b44210c8c20f3b9c4e89945351de74170dc1510fb4cb203b8e237252b85e86bd516221a4b87331874fab8e44264ab926276c85386fb3fc686edd972014b7107695997030c33f28c715e7016b99dd89d70c7e37ded7881ec6d79e4c6091654e1ab7405485352c04966f88321faaa6e8d848ffb6f72ec83a0d2c6dc4c6616c15f7b64241df14ab92461861922c91a76f2f6cf0c4d5d25adc0f620bff3f389def3cd27f8be86b4c7d7c2cb10e5c37e9d51975c53bd52526774e82590e2ac1bffc3f85dcd509d8164643b2757f6272208035a0eb2c2851f534fe6076fc09b9a17dbaefb3b40728f021893bf876be9623e66ba510c7c1e1c7e9b41ba3f33bdc1e99a2e61b597953431d8a41632303b3460a3517ed33292a2c670d5b32056c557b9a4f4dabe2db0c567f97b0a6f175ef744df08a4f05a21b215e94d41d377a8549b74e3a2b2fd75f3fb831d31cd57ce1706828062161a8de40f7ee9da42b2bc328f5dbf9c8677749ec54f0e4851ef75b9ac8c1da4ef0e64820a2fe9a0d7a2389a03a276a49f3e89b61d416f570f430b5b55119d321455b543a5228c9dd930cc14716dd4bcc79e88fb2c44dc42efd8d9ac78511bba9a47eab9142f2ce606d4bb92654c333ceda165919eff62ac0616dc0fc4081e94758b3e61c8ea7f0bac58d2929a9f5610a8db85af6e06d01bc10cc935a44bf6278bb55651f03e4009fd29b8bf23ca590d88003eaa073da04a78f52e386fd393244bf7f04e405cfb1cb4df6d8d126f74fd73f89c93c5cfda154987de70350f8a2fc445f6d1db168b2a0c098f699afd4e4794883bff98376ecdb48b196c76d8a32696711b74a9eac14087c3505e563eadc32b4ecbaf8d3025410631d2e48477f6d4883722f1559b04fddd9702c7cb4efa470e2fe1119cb346a6554f40717942dfce122796e2d0747c2e7ab664622ecac6eb271a06d28f9eb09fa4343ed5705a4502a2b04e0e1d06fca38090470448448711e20f489ec56ee8d29a573b416fc1998881810512312960dad1d12611097d2f285d8354863f420e4a1639bc6fe251c7be8f57141a70bcc35482b85bb65f0f3866676956feb7e7eeab3deb9cc8a64595e9b08ab84b8bf63e00f10fc6bf9acda8d3ad830640acb0c706f4b3f186586a2b00356812449df8325cb8016dfa4b08b3c4c4cbcb0486bd803e5b83a35c4e131de7348cc811509c4aeadeafcf913eaa10e246553c4681432c741a2c9c9bedbe9201d3f7a586882799cc3c0476b9e93aae87de43c7b17b10dcdfee1de9410101ca0299265a180af8fe936c447c2e7f918cd8ba8a41b98a93d001a43bd1bab2fd5701604ce650215648ddf2527899795701ab51a90835851ddec90480c37862d458ce2ee923df10b2bb7b881ffc5a756b7fbdcdf78ec4660526ed4b39827652c1e4df8596852b6387ef13a77cbf85e52fd5862275d7ef3be14c5073d8d262cdedfe5cedf55671224da3dbc9c43f9e80bde7552c6452fc301864f31e3061d8374adb0c8e66eb00fc2f60a970a1962548e9f41e1424741dcadf73c19531d0643f142862e7237cba74132582cac5fd636b689511305cb64a8e47d79826ff3f1172d2f9471bc21cdd8e89c7da3b9ee042ddc218d7854282279a434bf537fee10fc0992b91bc0e5ce6bb5ec6300b94e7a964eea8b4b4a4cd6d0140ec47c556799e47d7d35513d49c58fc1724e738da4531af358d3343e9a14b4dc4e7f3044621c05dac9ab04051870c1d0a7d0293180a570e763c4c0e1fa14d64384bc5f24befbccfd622e69727d3227b444a96fc9518ef1256cb5138c8a11c58675ae3e13762d91678bb0fd3e28508eb691762cc1cf79f5d4a65c3702eb9e058b5ab34252abf72ddffe427ef05f5d25f7f036327b3b948ba2566d8a6f41a916e96fcea1befca8d1447ffa0989ad127aa1c6f6f185cd419c48e635db887a2ce6b447ef32f4daa200a789a6105ea2706340474d0446b0e06f76e5124f122e40fc37859373ee89b71047077b1f2f8ecf146ba9bd8e7150691d066b4a2d8150cad815951fa9a2f0c5b26214c2e479b2d54b101774f0d5d7894a5c8c700d85f35d03f4cd83aebbfb9dd46c3dc108bd82fea3fef3660730e50c4da2b10c8546ca514f7b867ef1c8de1bf10f8056557d2875d7b790f21a839544ff1ade308948c3d51668f2ce7bf55620b788140ee1225267cf4cab9c078e6ca704de9a551afb48990d17ea575b99d42bed177d6fbe99663e6718825a4dcacca92b415aac6eae0e7203fc90eef75cd6331b97868019093397e3c7bd2c74dfee8741ebbef9df4dc672ec4533695ba3d4daab92b84ff51841fcdceb9ebc8e90c2ff6b2851552e685e217dacfefbb9fed384e1db40d4fe539ca3639a598ba2f3f42a0afffb69a37d0a641e20dfb9b5e02ee4e28c0edbfe0ef64fae6cdfb5e78d192d485d3ec3ebb05118c1b5d5966cc3fcb4a44ce266e89e45ee88b9492b551e297d7a973665bd7f50dc1fcbd1b65a1a8d832d1d8a58c05076d3f176150f97f91573ef5d6b59dd49d3b4a513a42a26069b0df75367374b498abc674d362e2f69a5d00312e78a00726583bf1ae6bac7eb3c1ecd69ecf261eace7803d6739732057153fc445f5eaa2d55ddaf7b93fc75770226ea99d9a3ed54385b0999903705633c5061fa25be827ce1dee8aead98a1fbb00348bcc3da080d42385aeae7c32d2923644b096f037fd43ab4395eaa3c2f7461594eea1811bbacfa973720f974b7641b4bb2ae18c15f90d7062e10be963ce61762c406b78c0b7a17b354a3d37a9731423ac1ae4bd58347f26c635534d62dfee5b9756271bbcee97c3eabef1ddfec5f4c31f035b73e7b96812f6412b3ac9351207917da702cd214d62f5ba6e7633adc1427ed8d1d29ce12d13a2c9b67ea474aeb30e3e6b0680f36a21c7ba5de8405f5f951ecfc77f3711745fc4d5dd32c029d6725f0108b9f2c4d56b6fb50c5666d553c2f53a3a5e8e30c0e8c65b94568dae4b2912a23591e2e489026570f62fd05b1234e4745cbc32de8b525f852f95521015c8e079d6a4ce6a93300c8bddcc7e568b77b3f42623dfaa9ed5aec6736b5e1949e1f70c0747e1b2302ea1ccbdcc1c2e9e64ffe825e58c3295aeb18b320f4bb424e2566012a495360f5d06a437950a9b3a6b095baff298135ec26ef9699532ddb5798efb9992ecd1537eaf6839b6d1179ce4cebabbbafc9d57522870209c71ee03c18509c8240c53683fbd375267336c296c9945688338e20d06e2534160e33cce8f62cefdafbd2ac3be6f599096766fce386492078138b7762ce8ee9c71ec29c88853a6b32294a8daa9d67da56d144010d0dd549c0386600aaf285e132c3656de7b0f2077d8e3b035ed2e244812289460322008d7b62f826365ea864b3f49cd384f06a8dda160a3509011179c474d1a3d5117aca8672abbd1ab1bccaf38fd4e24d0c72b80f35ad453787b17d04e7f23429b02b6a6fb0ce2cc395fef17798e72a6f5ad93acc57619e2c515cea805dbba89c3b6e186d156d0a31dec040cb5c72c5dd5a33f588db1689dcb2306875146814d71db759d7e0ccd5e9633a68c005c584fefdf4b93fa8fb3540758ff8f00c149e409da0373eb063b82f04c04cba2fe902e2cd7920e7b009e837db3f3df2929ba2f878ac705efb949d7594a5911a25c5822b578c13723eb3d774012c2321a3b197e0245632d3e6009fde948f03bf63969b54012173679cd0c856fd4c581307257ccec84e1f7e370bff4e6a527c05aad40464261789cbaba88ae04f92dd9d8b75f25868561d393957f837374e37622c6bd713c1ba39f78bf8bf31a77d37e17ce0e5e569003808bfc989aee09a7dfcc6b0660d67b2f411e95e060ad7a928eadad6f98103f4fc4b5b993ad75f7b4bbe7ec1949e17400dce5db4b506f3ec4a37058ff81f1ab827c1a7ec1002ecfecd716e31a02bddde3723a68d071ea42229ecd404f32bb4ee97411bb879e47d896a3418627000c3f629738b826fe1e85f6679a806024fbfd3f667fcad6c3cc0805e341178a4bffdf4de8f0d586b2d61198496d0df9125d31e6daa60e946acd47dd051d71263bc75d053cb9becff8cd7c7a5123e73f1979da4310ab7d1a5a1da21f3a1531be98de30e997b7155f88fa4acfb2d4cc915f0aa5cb5c674d7a426a190f8298243f25ee10d2455ad92b4617479196a37f59c7f22e89dac4a608ee652044f3d6962d98e2e70a08ffed2974b7a4c620b033e8e9c40c69d0119cdd3544c06f1d70cf692e4e8f73cee70268f8b7f2812b79005535f19f4a714297a5fc21daca2264cea0669318b03e799270cf89ae9eb6491d5fb66ba334b504eb6088e9bdc688d7486df9d12256cec37a1d4b568de1c75e205c0a8dec770b474224a1d0bf4497df0b404f60fff915aa2866d63a8ea3c45c8dfe761ef02945b4d6c2c46e95bac79aa244c64446555322222f6a0a65f41677046f9b3b3183ef1d55be1ef104986888af0e0c4be293e7fe14f52cef0d911c96ae9890fae3479c79ba1b08b3a7994bfea4a54c3db00776d62655168b7a24acc2031f9dab7f55c766de0a2f20cf72e247edd37cc984d152b8160c1c8c7527fc42a6a791feb62f788637da5bf0e2d00276d6abd064a2c85094c8f1fda4111f6e0bbfd1e1897bc640724d89a07e8691bbb247f89cf9fe1c54323ef685c669f420d9d6c3f71023b747331bd3554e33e447c99f396444c141244341634c7a1b2e2b72991ff9a47b27fbb0e80938f58bee26f397703c24e91fe261f00773abac033edc55aa9939c36dd34e51a6bfb5f3c1c3690e2c99f2c83aeae6c467e2891e8b5cf5e524a98d15f21bdd846b13d3956d85e9193292e2948ac007ec8fcd1ac3aacb079d03cde1b20e27a3718eba8f0ccf276fbe66c70357f2ec621610edbb1fe6d8bbf7a284e95c0d8ce91aeac1710fd624f7ffba0aabd073e72f6a05d5a638a3afb58466af63e2870fbb43cb663ba087c094b5311bad7cb0b9d3901fa2c3eb7191c96f4c1da14c8fd8a1c505056cfb8ce6c1e20f109b868effc77c92e5e7f552dec0ac394bbc272ff8d5676f992db4606cec16fb39c0979000f2c32e7aed125a608a418a57ddcad3551b997ca5a002f4ee98059787698c74733e0df5cb13d5ce33a1523d7bb7a3ba96cd5bd240bab3bcb5458c92348f203c487c9cf187ed558aabdc43baa37dbd67c8e8a3a97d2d98433aad285c55d6721ac42aeaf6f2e63328bbae7f8881df5416910955235858852cec3810440435b09383c7e9aa020bbb0050be5770bc37eb7440c1c16366e5183278ee9898964006ed7067dfe43317da7c0e20ad2cf932b0048ee1ab6d87071aaad5af5997ab0a09e20d4427f7237e851a50d645780966bfd4c7f8b602fff4c6342af9dd2ab29160d157c4a0b673f16f41a99ae1ebc84c2779f9ca0e565f87f83198b179f39a14819fc8c656c1a16800556df336d4ed7ba42be1c7c244b309ed997af73c83361638e9b1169e9010c36c82d429339eeabaf5794c198e8b7a43ebbc2ef5c478ce4e0b31659cddada8f6f465ab73851872905cef83fb3fd3b8180bdd5c18354d58ba0b0fb37415bf025092ca601bff113b904d1a5815f47147d088b1deb4ce131f10303b3d04cd2998c5d2c22ba9ec8c2a871d8d9aede9685f38d9ea6b3fb07926f690a47d405c12d78129c568a6628f29161734b7fd12f19155995fee722764fb9c95d0bfc22d79b7be573e402d3f5468d4606afd1b48ce50fc579894257d20ae989bc5a7a721d4bfa160489d58663a802e025ff41c9350315b9ae3fcbea4512180764ea1a622713b2486ab7bdb703f264682c40a1438cbbf4345adc9a8f2f966ce41c4c88cd6e227908ef300ae35f6bf468083dafe911f7372d146b395d6752ee8416b49da5343f2e2e312012571ba0aa6601d52375d71ee13fbaac49ac21cb9e5e264f754ef0c138568d0a5f0c857796311e7f5dd77bf9f291962455b9668c619f3a4769f0258d3561d11f6aa76602289435e759df2dab605cdf782da68c78b6d68d4fa0c51291586468bbdb7ec2cc215e39aa59004a84970ebe64ec53184ba1ea694880113676af2773426d45b8d7385181fa08b749dc8951958e6bed9e4c9cfc9fa3d9e43fcb10c3f0ef042d8c3e209408fb2e0b1b649e36db582eb4e0832fdc7097c8df663d5754ae22356c5f8ba957dddf5e87e3627be2760e9875a5322bdf0e344d5a2c9d986914edbaa1d196924b4727be7bd753ec47df8494ee95badc33f13edcdb3cd75592a4c4b403f494d8cf96eadeea8caf8531862b24e1be6319bf7bb51ba6052a6bad01172727dceb94dee166e58179a51bde9ac1b2b06d65f72ecc1a17f1f75cadff98cd0d285016a4eed4f5cb956ddcb25b68b75fd88c8e19e8aebbee1532ff51b9efce33e81a47f65d26d3ab19bef11a7fe733509f168bb91dd0a66cf695cc8d6f1aa6a981a97a8c067cd93c30339532b3c9281aeef8266539db63b90803fc3e6fbea98aaa113bdeea5bde54cac7a0fbb1c0c0601e7ee5803bae13ca026d9d6e86301bdb7430c44ed23d3741f5cbc7ea879d6ffa0802719bd07f7804e782716df819abfc02c2c21da8c195197019a012e094972acf83826f3f69ace517449cdf5c620686c1605f93efac540fc4febdcd9bfe995e42498e651977c1b8189d2f763e97e8663a907791987ccff40eac8b92c0eb79379e17e831fe0b8e5836b6e891f70837d88f4cf36c3016a696a9690ba0ae77fdbd25f4af3ead31cbce6914c976fd57dd8998fe65fcf49ab3447f35d5b98333ac8a819a35faf9df8940559ee60900f986d93df77f7cb6d21612caff85cef369c5bcf4977907f1fdfb0c959fc8bb73a57357c0e702ef7821663a34b8c6a2df342fc17c60b93e6ad9a592287559c772bb48c807040c6cdd7212164c5b46b30f4d90ce004c51ff49ac0546c7f76b2d3226a5ae9730a0bd121e8082db421949f6394c153d586261c3c062177d550495ff123e3628811208158802cc751c631dd5dabcd53fb3951abb9a4e8d9ce536f9e4873ffd3dac8f48d76b01ef013708609a14ce0589a5c3faf54b43a916823bd2762c5419b6c3cab37744f5b59eea53b9d7b0bdcd9903b8812ffd3918dcb763e36356a3d5656fa2e38c54a66b3334ead5fb0ea79d480e3eafff29c419fbc34e21cfdd65f5f2a496cd4484f9e358eefd6f8e88e95444b5c47f8b910c5562ebdd06ade661e96a5dcf02e2a3c2980e4fee856940aa84ed16e1d8b08b19cb08652decc15271ed71edefff7fc24708083ed2332607964a5909099a1efe13c3dbb495919348a539366fe2efed11a804fb4c224317b177c1216d4da2307e276ede209e740b83453e73ee4fc4521d9e86fe6b8ebe2419c5532c6828ad78fbb36ecdb05d2ae3bf66237d2ccbc427dc2e9c401bc6798b6d063c33a405e3b89aabe1265dc47e4914d826beb840afb1f37fe7c5af7e2bb8c4be6702bd66714d0680124a0648979fe72ab55faa30d8b22170e2cffdc2f7ab9b08dc63146a27b9a18b3e928d26bf802af71fa4b27ae16e730dc898171cdf32cb11daf268479d6b8195a6390cf7af9f65224fc63c165b47d5496b2dd27a253e3785dd37f31c5c5ea280b1c04f4ab765b044804a6a6c4d884ca65dfe2fe4a6198c2429706f5a23f5677cf0b0538f61a0db3ee36bb53700212e2c214a71283b75fd47bb96f5519737f8eb342b2dd430b80cf910a13c51b9ff2cc9aea483f2ca9e48d1d792c55d50c689af861ab5c4808dfde5398e0fbf1f6fb2775e90c32189ebddaaca3cf9437649d76ffee6f59704ee6bc862d67121ffbe598d2f12a6fb587019b79d90165a4dbf81a7b0c0f7da65b8b33a628c6b733a9cd5f49ae683f14c2e7fb7ecb1fa53f3689d7611adf384958dc4c114ab8035273dc8876e0f0638dbedc2e70d22e9f01925853efa447867b8184acd40bb3a19374d9ffb8651b78bd020ad704ab826935f8f39c469e0d5b9d5817371d25e09e976a35466bb8cbf415db811670970e39791059f7ba82e8da9d84323d35b07fb51b89d82204305aaef230a0f72031fd87ac89788f6bd9b751fddd6db027def2fe849133e95c90a40c9168bd93f57fd8a2937ca4e685e9576598939f8c2f54ce965ac2501013adefd7ea1a78127e4072dc56c1552e0e738d58eb32f793515ef186fbb89294ccc9f36d3d4738019e3a9bb6b7443c3bf7c5795aba4bb77c2d01d0ca39a1c20c7f04a27c7c4e11cd0a5b14d98a0835521ecac1bba324c068816c9d7d023cbf2a008726b47c910ec1a63e167d6962a17e28b480a80475d9b53fcde64e1fe1d7940ea673ed7abed49e0c78416871a67058f6997b7c3a0140fd11fbb5c918d32e8710c781a281b9bbf29fa08466c4ba730a904cf48cb611d842bca54f158adf8c747b31746c2d3213c99288f11b98d597637c991b5ca31981f42af8321a4b9b0379ce073d0e8c4c7beff9d9dd48b646be43d7ac70ea01205a5e8d2f7230fd7942bb898406af09b578307e2f1d11ccd298d03144ffbfd6179e5f502f939cfabc37b7d319ab899dab7eaee9edc09b765176fa02a38d4d37630a9d7e7326b781f39efdb99cbf5d0f94b45e6721e43dd09a8258501dafdcca838287c65dae5ba2abc3a853b910fe5b96ef48f1a610eb54dfe7100a499c7e69fa9507555b283e584ad0bd091362091443012ecff49d90ea598c5676835bb1ba67ae70586d54a811cd3ec395152d715cdd45de175d4a2c7d557d9d4a0d7cada14bcd05d3496df2c3365cfa6f1265f4e61dc111359044e02522166461708aa34e858fe3625f816406cf6d74025b175c683114e1ee01ac59d2a65eb5fdbe7749d481b081508d75469badfd634e9f12b6bf8618b3f070f2fc74ea835969b6228f68deea1d401ade7a9c4097253740827513eee9cb5f20d874b633f3282384b9672347f9095bf3a24c7ab6941b49ff812d2c0e3a3b3f59648492e6cb7280a5e5f33a4a7556d0bc616e9b9f9a436f97ba7367cf0319a9e322e60d6fee292b9eaa42e0c1a68b8ec742642a349e53f277d393cf81dc0097986a275fb34a26a05e61bfadf0c3cd5ca77ff979ac4c2cc62ca6c1a17dd8a1711752caca7d40ec9f36c3281af9a716137221fa5cb38f8dad3fe2d0a38ef3d39ca45355fb06b10223b3bc3d397506ea5ba0bf57d52af5ffe6c5ea9d7321704f1594d7fb43b71ab8fbbf181aac75e689d7cace384ff14b62499e84782d8546881ff974f9dd85619fcfb6fb5341cdbedae170a231f8a1f09fc13fc94cffe4d24a16422478f99f4031dd8fa84084a77504a07e4854bf0591ab7817f639d18bdd94a9c24cadfb94029dd3f4a68b08129e26e190eb05cafd776e8ec2f87a51bc7aa0f9de5e0c6c9757785fe88aab3b767cbe61f9ef64034e6200808e3c017c7e02b885f83944c690b1fac5d41bf1c2cbaed67292824e663cc28dcd463e5f3a25502636f9422e4b8b654415b30d02b4bc48be3994c96884dfcaa60852feb25f0b2d5dfc7b9f737061415db0fc8a2b4ba38655031b7e78f9dc543b902110660b5429b34470498b6e45cc12a98432dc051472aca4c77282a9072775375ceb04f53cf023571914ffd042bf09ea59d957e9f7cd469ecc1cf3f9e4ec54ac3bedf799d2030d93e1a672f6441d179bdecdf528780fda66bf572a25676763018c6e163f6124b3f60367dacadac5ea75f0a6ef007d0114389ef0876c56d8688762c89509665c998dc27108710075355bcabc8b16ce9179312ad07efa3033b8da6ad0da6c8d32f1e3d4af0a62754dcea09d1991c654ba51b837dbbcc69c3f84d191b75317ba44aac0714928cdff1c926f5768aed4499c050311b3df448e88251d0ce0e47575733ee5ad5f2a64404043af626a10c21f0940846e9974846af8f238d9a653801388e4fa9d4ec4f460e27fd70cf5264e0e062cc6a67f184ae785e7de585bf8bdc846e48d6d2a8e649844581c3071a2577d363b20423c19945321bbf2b616d4e4f5f9758221abc7b74fa9c02c03ae2362e2eb610801f8923abfc571c351e88feb7867e42e31f14e9b2aba3c751601a2050375eed7c39897f5a7c73025d4e09f1d69cc089b771b532eda4582b671aad3546c43fd3b2960a2d4c310be098520635f4d9273b72b2d16105f24db87b3e5e754fae93cdb2cdc971e1e4a7ad4a1b0cf4422ab9146851301edf6a43ede9b8bee820075950fb4f7500bc001dfafecc68d1cf4583808b0b6abbaef4bb29e7ead93e5ad6b7ee884f9b895502110a2a27fbeabe9ef072f63fbd9d6eca995c37dfb7e0e62ec36006f6d40fe4d7b0deb87b8108ee0342186106edc1300e7901a92cf4278e3bed1eed253b2c0e9c5a910b3b81d72fe509c10f3843c88b8818349e30d1c38ac29f413edfe0a80f01101cee1373e3b4ab2302096facb90cb08c8ae3b8480a951399a297e1f903f797f40165cbf49d876e85dc69a4157ad3931d4e4e0f0389e8f0309035c82e1aa7bab6da0d738558663adce33259d5d7ec5d1decc857ccdd5f0ebcf1ef547d21bf</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-default">
      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-default">您好，这里需要密码。</span>
      </label>
    </div>
  </div>
</div>
<script data-pjax src="/blog/lib/hbe.js"></script><link href="/blog/css/hbe.style.css" rel="stylesheet" type="text/css">
      </section>

      
      
        <nav class="article-nav">
          
            <div class="article-nav-item layout-padding">
  <article class="card-container article-nav-card content-padding--primary soft-size--large soft-style--box">
    
    <div class="card-text">
      
        <a href="/blog/2023/06/11/SQL%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7/" itemprop="url">
          <h2 class="card-text--title text-ellipsis">SQL构建工具</h2>
        </a>
      
      <div class="card-text--row">Newer</div>
    </div>
  </article>
</div>
          
          
            <div class="article-nav-item layout-padding">
  <article class="card-container article-nav-card content-padding--primary soft-size--large soft-style--box">
    
    <div class="card-text">
      
        <a href="/blog/2023/05/13/springboot%E9%9B%86%E6%88%90activiti/" itemprop="url">
          <h2 class="card-text--title text-ellipsis">springboot集成activiti</h2>
        </a>
      
      <div class="card-text--row">Older</div>
    </div>
  </article>
</div>
          
        </nav>
      

      <section class="page-message-container layout-padding">
        


  
  

  
  


      </section>
    </div>
    <div class="widget-info">
      <section class="widget-author widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-body">
    
      <img src="/blog/icon.gif" class="soft-size--round soft-style--box" alt="QAQ">
    
    
      <h2>QAQ</h2>
    
    
      <p>贵在坚持</p>
    

    <div class="count-box">
      <div class="count-box--item">
        <svg class="icon icon-article" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M240.51564747 647.74217627h196.07203239c16.59071043 0 30.16492806-13.57421762 30.16492805-30.16492806V165.10332731c0-33.18142087-30.16492806-60.32985613-60.32985612-60.32985611H245.04038668C225.43318342 104.7734712 210.35071939 119.85593522 210.35071939 139.46313845V617.57724821c0 16.59071043 13.57421762 30.16492806 30.16492808 30.16492806z m663.62841731-452.47392089v482.63884894c0 33.18142087-27.14843525 60.32985613-60.32985612 60.32985613H180.18579134c-33.18142087 0-60.32985613-27.14843525-60.32985612-60.32985613V195.26825538c-49.77213131 0-90.49478418 40.72265287-90.49478417 90.49478417v452.4739209c0 49.77213131 40.72265287 90.49478418 90.49478417 90.49478417h286.56681657c16.59071043 0 30.16492806 13.57421762 30.16492807 30.16492807s13.57421762 30.16492806 30.16492805 30.16492806h90.49478418c16.59071043 0 30.16492806-13.57421762 30.16492805-30.16492806s13.57421762-30.16492806 30.16492807-30.16492807h286.56681657c49.77213131 0 90.49478418-40.72265287 90.49478417-90.49478417V285.76303955c0-49.77213131-40.72265287-90.49478418-90.49478417-90.49478417zM587.41232014 647.74217627h191.54729318c19.60720323 0 34.68966726-15.08246403 34.68966729-34.68966727V134.93839925c0-16.59071043-13.57421762-30.16492806-30.16492808-30.16492805H617.57724821c-30.16492806 0-60.32985613 27.14843525-60.32985612 60.32985611v452.4739209c0 16.59071043 13.57421762 30.16492806 30.16492805 30.16492806z" fill="currentColor"></path>
</svg>
        <span>22</span>
      </div>
      <div class="count-box--item">
        <svg class="icon icon-categories" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M900.3614811 257.09082106h-339.81629553l-67.96326003-101.9448889c-19.41807444-29.12711113-48.54518557-43.69066667-82.52681443-43.69066667H123.6385189c-53.39970333 0-97.09036999 43.69066667-97.09037113 97.09036999v582.54222222c0 53.39970333 43.69066667 97.09036999 97.09037113 97.09037002h776.7229622c53.39970333 0 97.09036999-43.69066667 97.09037113-97.09037002V354.18119104c0-53.39970333-43.69066667-97.09036999-97.09037113-97.09036998z m-97.09036999 242.72592554H220.72888889c-24.27259221 0-48.54518557-24.27259221-48.54518556-48.54518556s24.27259221-48.54518557 48.54518556-48.54518444h582.54222222c24.27259221 0 48.54518557 24.27259221 48.54518556 48.54518444s-24.27259221 48.54518557-48.54518556 48.54518556z" fill="currentColor"></path>
</svg>
        0
      </div>
      <div class="count-box--item">
        <svg class="icon icon-tags" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M283.42180005 272q0-28.38857157-20.09142843-48.48000001t-48.47999998-20.09142842-48.48000002 20.09142842-20.09142846 48.48000001 20.09142846 48.48 48.48000002 20.09142843 48.47999998-20.09142843 20.09142843-48.48zM855.0332285 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.03999997 263.58857157q-20.9142853 19.81714313-48.75428534 19.81714312-28.38857157 0-48.20571468-19.81714312l-383.04-383.58857157q-20.36571468-19.81714313-34.55999999-54.10285688t-14.19428534-62.6742853l0-222.85714313q0-27.84000002 20.36571469-48.20571469t48.2057147-20.36571466l222.85714313 0q28.38857157 0 62.6742853 14.19428529t54.65142842 34.55999999l383.04000001 382.49142843q19.81714313 20.9142853 19.81714314 48.75428532zM1060.74751475 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.04 263.58857157q-20.9142853 19.81714313-48.75428531 19.81714312-19.26857155 0-31.61142843-7.47428531t-28.38857159-24.13714314l251.79428534-251.7942853q19.81714313-19.81714313 19.81714308-48.20571469 0-27.84000002-19.81714308-48.75428531l-383.04000001-382.49142845q-20.36571468-20.36571468-54.65142842-34.55999999t-62.67428532-14.19428534l120 0q28.38857157 0 62.67428532 14.19428534t54.65142842 34.55999999l383.03999998 382.49142845q19.81714313 20.9142853 19.81714314 48.75428531z" fill="currentColor"></path>
</svg>
        8
      </div>
    </div>
  </div>
</section>

      

      
<section class="widet-notice widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-notice" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M512 945.02305225v28.15620663a24.27259221 24.27259221 0 0 1-24.27259221 24.27259335H394.0352a48.54518557 48.54518557 0 0 1-41.74885888-23.78714112l-110.68302222-184.47170332a132.04290333 132.04290333 0 0 1-17.47626667-48.54518557h118.4502511a200.97706667 200.97706667 0 0 1 76.21594113 14.56355556l20.38897777 133.49925888a48.54518557 48.54518557 0 0 0 36.40888888 27.67075555l16.01991111 2.91271112a24.27259221 24.27259221 0 0 1 20.38897778 25.72894889zM997.45185223 463.45481443a194.18074112 194.18074112 0 0 1-38.8361489 116.50844445 24.75804445 24.75804445 0 0 1-36.4088889 0l-34.95253333-34.95253333a24.27259221 24.27259221 0 0 1-2.91271111-30.58346667 97.09036999 97.09036999 0 0 0 0-106.79940665 24.27259221 24.27259221 0 0 1 2.91271111-30.58346666l34.95253333-34.95253334a24.75804445 24.75804445 0 0 1 18.93262223-7.28177777 26.2144 26.2144 0 0 1 17.47626667 9.70903665A194.18074112 194.18074112 0 0 1 997.45185223 463.45481443z m-194.18074112-388.36148111v776.72296335a48.54518557 48.54518557 0 0 1-48.54518556 48.54518443h-28.64165888a48.54518557 48.54518557 0 0 1-33.98163001-14.07810332l-145.63555556-143.20829668A291.27111111 291.27111111 0 0 0 342.57730333 657.63555556H172.18370333a145.63555556 145.63555556 0 0 1-145.63555556-145.63555556v-97.09036999a145.63555556 145.63555556 0 0 1 145.63555556-145.63555556h170.3936a291.27111111 291.27111111 0 0 0 206.31703779-85.43952668l145.63555555-143.20829554a48.54518557 48.54518557 0 0 1 33.98162888-14.07810446H754.72592555a48.54518557 48.54518557 0 0 1 48.54518556 48.54518555z" fill="currentColor"></path>
</svg>
    <span>NOTICE</span>
  </div>
  <div class="widget-body">
    <p>flex-block主题部分重构，详情查看https://github.com/miiiku/flex-block</p>
  </div>
</section>


      <section class="widget-categorys widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-categories" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M900.3614811 257.09082106h-339.81629553l-67.96326003-101.9448889c-19.41807444-29.12711113-48.54518557-43.69066667-82.52681443-43.69066667H123.6385189c-53.39970333 0-97.09036999 43.69066667-97.09037113 97.09036999v582.54222222c0 53.39970333 43.69066667 97.09036999 97.09037113 97.09037002h776.7229622c53.39970333 0 97.09036999-43.69066667 97.09037113-97.09037002V354.18119104c0-53.39970333-43.69066667-97.09036999-97.09037113-97.09036998z m-97.09036999 242.72592554H220.72888889c-24.27259221 0-48.54518557-24.27259221-48.54518556-48.54518556s24.27259221-48.54518557 48.54518556-48.54518444h582.54222222c24.27259221 0 48.54518557 24.27259221 48.54518556 48.54518444s-24.27259221 48.54518557-48.54518556 48.54518556z" fill="currentColor"></path>
</svg>
    <span>CATEGORYS</span>
  </div>
  <div class="widget-body">
    <ul class="categorys-list">
      
    </ul>
  </div>
</section>

      <section class="widget-tags widget-item  layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-tags" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M283.42180005 272q0-28.38857157-20.09142843-48.48000001t-48.47999998-20.09142842-48.48000002 20.09142842-20.09142846 48.48000001 20.09142846 48.48 48.48000002 20.09142843 48.47999998-20.09142843 20.09142843-48.48zM855.0332285 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.03999997 263.58857157q-20.9142853 19.81714313-48.75428534 19.81714312-28.38857157 0-48.20571468-19.81714312l-383.04-383.58857157q-20.36571468-19.81714313-34.55999999-54.10285688t-14.19428534-62.6742853l0-222.85714313q0-27.84000002 20.36571469-48.20571469t48.2057147-20.36571466l222.85714313 0q28.38857157 0 62.6742853 14.19428529t54.65142842 34.55999999l383.04000001 382.49142843q19.81714313 20.9142853 19.81714314 48.75428532zM1060.74751475 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.04 263.58857157q-20.9142853 19.81714313-48.75428531 19.81714312-19.26857155 0-31.61142843-7.47428531t-28.38857159-24.13714314l251.79428534-251.7942853q19.81714313-19.81714313 19.81714308-48.20571469 0-27.84000002-19.81714308-48.75428531l-383.04000001-382.49142845q-20.36571468-20.36571468-54.65142842-34.55999999t-62.67428532-14.19428534l120 0q28.38857157 0 62.67428532 14.19428534t54.65142842 34.55999999l383.03999998 382.49142845q19.81714313 20.9142853 19.81714314 48.75428531z" fill="currentColor"></path>
</svg>
    <span>TAGS</span>
  </div>
  <div class="widget-body">
    <div class="tags-cloud">
      <a href="/blog/tags/Activiti/" style="font-size: 13.33px;" class="tags-cloud-3">Activiti</a> <a href="/blog/tags/Nginx/" style="font-size: 10px;" class="tags-cloud-0">Nginx</a> <a href="/blog/tags/PG%E6%95%B0%E6%8D%AE%E5%BA%93/" style="font-size: 13.33px;" class="tags-cloud-3">PG数据库</a> <a href="/blog/tags/goView/" style="font-size: 13.33px;" class="tags-cloud-3">goView</a> <a href="/blog/tags/java/" style="font-size: 20px;" class="tags-cloud-10">java</a> <a href="/blog/tags/vue/" style="font-size: 16.67px;" class="tags-cloud-7">vue</a> <a href="/blog/tags/%E5%AF%BC%E5%87%BAExcel/" style="font-size: 16.67px;" class="tags-cloud-7">导出Excel</a> <a href="/blog/tags/%E6%8A%A5%E9%94%99/" style="font-size: 10px;" class="tags-cloud-0">报错</a>
    </div>
  </div>
</section>
    </div>
  </article>
</div>

    <!-- footer container -->
<footer id="footer" class="footer">
  <div class="footer-container">
    
    <div class="social-icons">
      
        
      
        
      
        
      
        
          <a href="https://github.com/miiiku/" class="soft-size--primary soft-style--box" target="_blank" rel="noopener noreferrer">
            <svg class="icon icon-github" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M64.6 512c0 195.6 125.4 361.9 300.1 422.9 23.5 5.9 19.9-10.8 19.9-22.2v-77.6c-135.8 15.9-141.3-74-150.5-89-18.5-31.5-61.9-39.5-49-54.5 31-15.9 62.5 4 98.9 58 26.4 39.1 77.9 32.5 104.1 26 5.7-23.5 17.9-44.5 34.7-60.9-140.7-25.2-199.4-111.1-199.4-213.3 0-49.5 16.4-95.1 48.4-131.8-20.4-60.6 1.9-112.4 4.9-120.1 58.2-5.2 118.5 41.6 123.3 45.3 33.1-8.9 70.8-13.7 112.9-13.7 42.4 0 80.3 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.4-43.9 2.9 7.7 24.7 58.3 5.5 118.1 32.5 36.8 49 82.8 49 132.4 0 102.3-59 188.3-200.2 213.2 23.5 23.3 38.1 55.5 38.1 91.1v112.7c0.8 9 0 17.9 15.1 17.9C832.7 877 960.4 709.4 960.4 512.1c0-247.5-200.6-447.9-447.9-447.9C265 64.1 64.6 264.5 64.6 512z"></path>
</svg>
          </a>
        
      
        
          <a href="https://twitter.com/guanquanhong" class="soft-size--primary soft-style--box" target="_blank" rel="noopener noreferrer">
            <svg class="icon icon-twitter" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M962.285714 233.142857q-38.285714 56-92.571429 95.428571 0.571429 8 0.571429 24 0 74.285714-21.714286 148.285714t-66 142-105.428571 120.285714-147.428571 83.428571-184.571429 31.142857q-154.857143 0-283.428571-82.857143 20 2.285714 44.571429 2.285714 128.571429 0 229.142857-78.857143-60-1.142857-107.428571-36.857143t-65.142857-91.142857q18.857143 2.857143 34.857143 2.857143 24.571429 0 48.571429-6.285714-64-13.142857-106-63.714286t-42-117.428571l0-2.285714q38.857143 21.714286 83.428571 23.428571-37.714286-25.142857-60-65.714286t-22.285714-88q0-50.285714 25.142857-93.142857 69.142857 85.142857 168.285714 136.285714t212.285714 56.857143q-4.571429-21.714286-4.571429-42.285714 0-76.571429 54-130.571429t130.571429-54q80 0 134.857143 58.285714 62.285714-12 117.142857-44.571429-21.142857 65.714286-81.142857 101.714286 53.142857-5.714286 106.285714-28.571429z"></path>
</svg>
          </a>
        
      
    </div>
     
    <p>&copy; 2024 <a href="/" target="_blank">QAQ</a></p>

    

    <p>Powered by <a href="https://hexo.io" target="_blank" rel="noopener noreferrer">Hexo</a> Theme - <a href="https://github.com/miiiku/flex-block" target="_blank" rel="noopener noreferrer author">flex-block</a></p>

    <p>
      <a href="javascript:;" id="theme-light">🌞 浅色</a>
      <a href="javascript:;" id="theme-dark">🌛 深色</a>
      <a href="javascript:;" id="theme-auto">🤖️ 自动</a>
    </p>
  </div>
</footer>
  </div>

  <div class="back-to-top-fixed soft-size--round soft-style--box">
    <svg class="icon icon-back-to-top" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
      <path d="M725.333333 426.666667c-12.8 0-21.333333-4.266667-29.866667-12.8l-213.333333-213.333333c-17.066667-17.066667-17.066667-42.666667 0-59.733333s42.666667-17.066667 59.733333 0l213.333333 213.333333c17.066667 17.066667 17.066667 42.666667 0 59.733333C746.666667 422.4 738.133333 426.666667 725.333333 426.666667z"></path>
      <path d="M298.666667 426.666667c-12.8 0-21.333333-4.266667-29.866667-12.8-17.066667-17.066667-17.066667-42.666667 0-59.733333l213.333333-213.333333c17.066667-17.066667 42.666667-17.066667 59.733333 0s17.066667 42.666667 0 59.733333l-213.333333 213.333333C320 422.4 311.466667 426.666667 298.666667 426.666667z"></path>
      <path d="M512 896c-25.6 0-42.666667-17.066667-42.666667-42.666667L469.333333 170.666667c0-25.6 17.066667-42.666667 42.666667-42.666667s42.666667 17.066667 42.666667 42.666667l0 682.666667C554.666667 878.933333 537.6 896 512 896z"></path>
    </svg>
  </div>

  
  <!-- aplayer -->


<!-- dplayer -->


<!-- copy button  -->
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js"></script>

<!-- https://clipboardjs.com/ -->


<script type="text/javascript">
	(function () {
		function getCodeType (elem) {
			const classs = Array.from(elem.classList.values());
			if (classs && classs.length > 1) {
				return classs[1];
			}
			return "plain";
		}

		window.addEventListener("DOMContentLoaded", () => {
			const copyBtnClass = "copy-btn";
			//  instantiate clipboardjs 
			const clipboard = new ClipboardJS('.' + copyBtnClass);

			clipboard.on('success', function (e) {
				console.info('Action:', e.action);
				console.info('Text:', e.text);
				console.info('Trigger:', e.trigger);
				if (e.trigger) {
					e.trigger.classList.add("copied");
					setTimeout(() => {
						e.trigger.classList.remove("copied");
					}, 3000);
				}
				e.clearSelection();
			});

			clipboard.on('error', function (e) {
				console.error('Action:', e.action);
				console.error('Trigger:', e.trigger);
			});

			document.querySelectorAll('figure.highlight').forEach((elem) => {
				const codeContent = elem.querySelector("td.code");
				const copyButton = document.createElement('button');
				copyButton.setAttribute("class", copyBtnClass);
				copyButton.setAttribute("title", "Copy Code");
				copyButton.setAttribute("data-clipboard-text", codeContent.innerText);
				elem.insertBefore(copyButton, elem.children[0]);
			});
		})
	})();
</script>








  


  


  




<script src="/blog/js/script.js"></script>


  
  <!-- 尾部用户自定义相关内容 -->
</body>
</html>
